新版本的PyPy附带了集成的 Stackless 。 据我所知,捆绑的Stackless与2001年的Stackless起源不同。所以主要是带调度程序的绿色线程框架。
Greenlet 是一个自旋Stackless,它提供Stackless绿色线程功能作为扩展模块。
使用来自 PyPy 的“native” Stackless 比使用 PyPy + greenlet +某些调度程序(例如:< em> gevent )?或问题是我不能在PyPy中使用这些类型的扩展?更具体一点:我知道PyPy有自己的greenlet实现(基于 continulet )。但我很好奇在PyPy中将外部greenlet与gevent和内部greenlet连接起来的可能性。
PyPy是否附带了一个用于Stackless的异步IO库而不是标准的?
我知道stackless本身和python的其他异步轻线程扩展(eventlet,gevent,twisted ......)。所以我不是在寻找它们之间的差异,而是通过无堆叠构建来形成pypy的优势。
答案 0 :(得分:14)
PyPy是否附带了一个用于Stackless的异步IO库而不是标准的?
从PyPy 2.6.1和PyPy3 2.4.0开始,您可以使用asyncio(通过pypi包)替换无堆栈的异步功能。
使用PyPy中的“原生”Stackless比使用PyPy + greenlet +某些调度员
有什么好处在更丰富的Stackless API之外(例如,微线程的腌制),它可以是速度的,因为调度程序是用C编写的运行时的一部分。基准应该使这个显而易见。
有关无Stackless的更多信息,请参阅本文What is Stackless?