16

新版本的 PyPy 附带集成的Stackless。据我所知,捆绑的 Stackless 与 2001 年的原始 Stackless 不同,并有延续。所以主要是带有调度程序的绿色线程框架。

Greenlet是 Stackless 的衍生版本,它提供 Stackless 绿色线程功能作为扩展模块。

PyPy使用“本机” Stackless比使用PyPy + greenlet + 一些调度程序(例如:gevent)有什么好处吗?或者问题是我不能在 PyPy 中使用这些类型的扩展?更具体地说:我知道 PyPy 有自己的 greenlet 实现(基于continulet)。但我很好奇将外部greenlet 与gevent 和PyPy 中的内部链接的可能性。

PyPy 是否带有用于 Stackless 的异步 IO 库而不是标准库?

我知道stackless本身和python的其他异步轻线程扩展(eventlet、gevent、twisted ...)。所以我不是在寻找它们之间的差异,而是来自 pypy 和无堆栈构建的优势。

4

1 回答 1

16

PyPy 是否带有用于 Stackless 的异步 IO 库而不是标准库?

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

使用 PyPy 中的“本机”Stackless 比 PyPy + greenlet + 一些调度程序有什么好处吗

在更丰富的 Stackless API(例如微线程的酸洗)之外,它可以提高速度,因为调度程序是用 C 编写的运行时的一部分。基准测试应该使这一点显而易见。

有关无堆栈的更多信息,请查看这篇文章什么是无堆栈?

于 2012-01-24T18:34:15.913 回答