Без стеков в PyPy и PyPy + greenlet - отличия
Новая версия кораблей PyPy со встроенным Stackless.
Насколько я знаю, вложенный Stackless - это не то же самое, что и исходное Stackless с 2001 года с продолжениями. Так что главным образом это зеленая структура нитей с диспетчером.
Greenlet - это spin-of Stackless, который обеспечивает функциональность зеленых потоков Stackless как модуль расширения.
Есть ли какая-либо польза от использования "родной" Stackless от PyPy, чем PyPy + greenlet + некоторый диспетчер (например: gevent)? Или проблема в том, что я не могу использовать эти типы расширений с PyPy? Чтобы быть более конкретным: я знаю, что PyPy имеет собственную реализацию greenlet (на основе континуума). Но мне любопытно, как можно связать внешнюю окунь с gevent и внутреннюю в PyPy.
Поддерживает ли PyPy асинхронную IO-библиотеку для Stackless вместо стандартного?
Я знаю сам стекс и другие асинхронные потоки световых потоков для python (eventlet, gevent, twisted...). Поэтому я не смотрю на различия между ними, а преимущества, которые возникают в форме pypy, со встроенными в stackless.
Ответы
Ответ 1
Поддерживает ли PyPy асинхронную IO-библиотеку для Stackless вместо стандартного?
Как и в PyPy 2.6.1 и PyPy3 2.4.0, вы можете использовать asyncio (через пакет pypi) для замены асинхронных функций без штабелирования.
Есть ли какая-либо польза от использования "родной" Stackless от PyPy, чем PyPy + greenlet + some dispatcher
За пределами более богатого API без стека (например, травления микропотоков) это может быть скорость, поскольку планировщик является частью среды выполнения, написанной на C. Тесты должны сделать это очевидным или нет.
Для получения дополнительной информации о stackless, посмотрите на эту статью Что такое Stackless?