新版本的Pypy船舶集成无堆叠。
据我所知,捆绑式无堆栈与2001年起的源站无堆栈不同,并有连续性。所以主要是带有分派器的绿色线程框架。
greenlet是stackless的一个螺旋,它提供了作为扩展模块的stackless green线程功能。
使用pypy的“本机”stackless是否比pypy+greenlet+some dispatcher(例如:gevent)有好处?或者问题是我不能在pypy中使用这些类型的扩展?更具体地说:我知道Pypy有自己的greenlet实现(基于continuelet)。但我好奇的是,是否有可能将外部格林莱特与Gevent和Pypy内部格林莱特联系起来。
Pypy是否配备了异步IO库,以便使用无堆栈而不是标准IO库?
我知道stackless本身和其他对python的异步轻线程扩展(eventlet、gevent、twisted…)。所以我并不是在看它们之间的区别,而是从Pypy中获得的优点,这种优点是内置的无堆叠的。
最佳答案
Pypy是否配备了异步IO库,以便使用无堆栈而不是标准IO库?
从pypy 2.6.1和pypy3 2.4.0开始,可以使用asyncio(通过pypi包)替换stackless的异步功能。
使用pypy的“本机”stackless比pypy+greenlet+some dispatcher有什么好处吗?
在更丰富的无栈API(例如微线程的酸洗)之外,由于调度程序是用C语言编写的运行时的一部分,所以它可以加快速度。基准测试应该使这一点变得明显或不明显。
有关Stackless的更多信息,请参阅本文What is Stackless?