在PyPy和PyPy + greenlet中无堆叠 - 差异

Rob*_*mba 14 python pypy gevent greenlets python-stackless

新版PyPy附带集成的Stackless.据我所知,捆绑的Stackless与2001年的Stackless起源不同.所以主要是带调度程序的绿色线程框架.

Greenlet是Stackless的旋转,它提供Stackless绿色线程功能作为扩展模块.

有没有使用"原生"的任何利益无堆栈PyPyPyPy + greenlet +一些调度(如:GEVENT)?或问题是我不能使用PyPy的那些类型的扩展?更具体一点:我知道PyPy有自己的greenlet实现(基于continulet).但我很好奇在PyPy中将外部greenlet与gevent和内部greenlet连接起来的可能性.

PyPy是否附带了一个用于Stackless的异步IO库而不是标准的?

我知道stackless本身和python的其他异步轻线程扩展(eventlet,gevent,twisted ......).因此,我不是在寻找它们之间的差异,而是通过无堆叠构建而形成的pypy的优势.

ami*_*che 14

PyPy是否附带了一个用于Stackless的异步IO库而不是标准的?

从PyPy 2.6.1和PyPy3 2.4.0开始,您可以使用asyncio(通过pypi包)来替换stackless 的异步功能.

使用PyPy中的"原生"Stackless比使用PyPy + greenlet +一些调度程序有什么好处

在更丰富的Stackless API之外(例如,微线程的腌制),它可以是速度的,因为调度程序是用C编写的运行时的一部分.基准应该使这个显而易见.

有关无堆栈的更多信息,请参阅本文什么是Stackless?