Stackless в PyPy и PyPy + greenlet - различия - PullRequest
14 голосов
/ 22 января 2012

Новая версия PyPy поставляется с интегрированным Stackless . Насколько я знаю, комплектация Stackless - это не то же самое, что происхождение Stackless с 2001 года с продолжениями. Так что в основном это фреймворк зеленых потоков с диспетчером.

Greenlet - это разновидность Stackless, которая обеспечивает функциональность зеленых нитей Stackless в качестве модуля расширения.

Есть ли польза от использования "нативного" Stackless из PyPy , чем PyPy + greenlet + некоторый диспетчер (например: gevent )? Или проблема в том, что я не могу использовать эти типы расширений с PyPy? Чтобы быть более конкретным: я знаю, что PyPy имеет собственную реализацию greenlet (на основе continuelet ). Но мне любопытно, что в PyPy можно связать внешний гринлет с внутренним и внутренним.

Поставляется ли PyPy с асинхронной библиотекой ввода-вывода для Stackless, которая будет использоваться вместо стандартной?

Я знаю, что сам стек и другие расширения асинхронных легких потоков для python (eventlet, gevent, twisted ...). Так что я не смотрю на различия между ними, а скорее на преимущества, которые появляются в Pypy со сборкой в ​​стеке.

1 Ответ

14 голосов
/ 24 января 2012

Поставляется ли PyPy с асинхронной библиотекой ввода-вывода для Stackless, которая будет использоваться вместо стандартной?

Начиная с PyPy 2.6.1 и PyPy3 2.4.0 вы можете использовать asyncio (через пакет pypi) для замены асинхронных функций без стеков.

Есть ли польза от использования "нативных" Stackless из PyPy по сравнению с PyPy + greenlet +некоторый диспетчер

За пределами более богатого Stackless API (например, выборка микропотоков) он может быть быстрым, поскольку планировщик является частью среды выполнения, написанной на C. Тесты должны делать это очевидным или нет.

Для получения дополнительной информации о стеке, посмотрите эту статью Что такое Stackless?

...