Comments 19
27 июля 2014 — 03 августа 2014?
Из черновиков выпал?
Из черновиков выпал?
0
UFO just landed and posted this here
Все, понял, старый выпуск, не актуально.
Django 1.7 вышел в релиз еще 2 сентября.
www.djangoproject.com/weblog/2014/sep/02/release-17-final/
Django 1.7 вышел в релиз еще 2 сентября.
www.djangoproject.com/weblog/2014/sep/02/release-17-final/
0
Выпуск старый, просто достал его из черновиков, ибо люди спрашивали о нем в ЛС, все свежие выпуски пока только на нашем сайте
0
а где ещё публикуете свежие выпуски?
0
Только у нас на сайте, за ссылкой лучше в ЛС обратитесь
0
Как-то я в прошлый раз пропустил статью про gevent. Кто с ним знаком, расскажите, пожалуйста, как он умудряется (в сравнении с asyncio) асинхронно работать без декораторов и yield'ов?
И, главное, почему в asyncio, который разрабатывался позже и на уровне Гвидо, не сделано так же?
import asyncio
@asyncio.coroutine
def compute(x, y):
print("Compute %s + %s ..." % (x, y))
yield from asyncio.sleep(1.0)
return x + y
@asyncio.coroutine
def print_sum(x, y):
result = yield from compute(x, y)
print("%s + %s = %s" % (x, y, result))
loop = asyncio.get_event_loop()
loop.run_until_complete(print_sum(1, 2))
loop.close()
import gevent
def compute(x, y):
print "Compute %s + %s ..." % (x, y)
gevent.sleep(1.0)
return x + y
def print_sum(x, y):
result = compute(x, y)
print "%s + %s = %s" % (x, y, result)
print_sum(1, 2)
И, главное, почему в asyncio, который разрабатывался позже и на уровне Гвидо, не сделано так же?
+1
Потому что gevent основан на серой магии greenlet.
Которая имеет свои подводные камни и особенности, и никогда не войдет в стандартную библиотеку.
Которая имеет свои подводные камни и особенности, и никогда не войдет в стандартную библиотеку.
+4
Gevent заменяет python-потоки и некоторые ресурсоемкие операции своими аналогами (которые работают на libevent), из-за этого перед запуском программы нужно выполнить манки-патчинг.
Asyncio же является полноценной библиотекой, соответственно подход более традиционный, через декораторы и функции.
Asyncio же является полноценной библиотекой, соответственно подход более традиционный, через декораторы и функции.
+1
gevent заменяет блокирующие методы возвратом управления в планировщик green thread-ов, где выставляется ожидание вида «разбудить этот поток, когда случится вот это». точно это распространяется на сокеты, таймауты, блокирующий get из очередей, ожидание завершения другого green thread. возможно, файловое i/o.
для возможности использования green thread-ов вообще, gevent дичайше издевается над интерпретатором, а для перехвата вызовов идет манкипатчинг. в stdlib такое не пускают.
для возможности использования green thread-ов вообще, gevent дичайше издевается над интерпретатором, а для перехвата вызовов идет манкипатчинг. в stdlib такое не пускают.
+1
Всегда было любопытно, чем Gevent отличается от Stackless в плане работы с userspace thread'ами.
0
Я, к сожалению, не знаю точно, но предположу, что мало чем. Сам по себе gevent — обертка над greenlet + libev.
>> pypi.python.org/pypi/greenlet
>> The greenlet package is a spin-off of Stackless, a version of CPython that supports micro-threads called «tasklets».
>> There are several libraries that use Greenlet as a more flexible alternative to Python's built in coroutine support:
>>…
>> gevent
>>…
В итоге, это выглядит примерно как stackless к которому прикрутили libev.
>> pypi.python.org/pypi/greenlet
>> The greenlet package is a spin-off of Stackless, a version of CPython that supports micro-threads called «tasklets».
>> There are several libraries that use Greenlet as a more flexible alternative to Python's built in coroutine support:
>>…
>> gevent
>>…
В итоге, это выглядит примерно как stackless к которому прикрутили libev.
0
Почти ничем не отличается — gevent использует greenlet, который является выдранным hard switching mode из stackless.
Единственное, но очень важное отличие между stackless и greenlet — у stackless есть soft switching который сильно быстрее и сильно надежнее.
Вот тут есть немного: www.stackless.com/pipermail/stackless/2009-September/004268.html
Единственное, но очень важное отличие между stackless и greenlet — у stackless есть soft switching который сильно быстрее и сильно надежнее.
Вот тут есть немного: www.stackless.com/pipermail/stackless/2009-September/004268.html
+1
1. Не используйте, пожалуйста, термин «планировщик green thread-ов» — такого объекта в gevent не существует.
2. Файловое i/o не имеет неблокирующей реализации в gevent — потому что linux kernel такое не умеет.
2. Файловое i/o не имеет неблокирующей реализации в gevent — потому что linux kernel такое не умеет.
+2
Sign up to leave a comment.
Python-digest #35. Новости, интересные проекты, статьи и интервью [27 июля 2014 — 03 августа 2014]