Stackless Python

Stackless Python或称简称Stackless，是一个Python编程语言解释器，这么称呼的原因是它避免了依赖C调用栈为自己的堆栈。在实际中，Stackless Python使用了C堆栈，但是这个堆栈在函数调用之间是被清除的。Stackless Python的最突出特征是，它避免了与操作系统线程有关的大量开销。在Python特征之外，Stackless还增加了协程、通信通道和任务序列化。

设计
对于Stackless Python，一个运行的程序被分解成微线程，由语言解释器自身而非操作系统内核管理，上下文切换和任务调度纯粹在解释器内完成，因而可以被视作是一种形式的绿色线程。微线程管理在同一个CPU核心上一个程序的不同子任务的执行，Stackless Python不移除Python的全局解释器锁, 也不使用多线程或多进程。所以它只允许在一个共享CPU核心上的协作式多任务而非并行，最初不能获得而现在有了某种形式的抢占。

由于相当数量的源代码变更，Stackless Python不能在现存的Python安装上作为一个扩展或库来安装。它自身是完整的Python发行。大多数的Stackless Python的特征也在PyPy中实现了，它是的Python解释器和JIT编译器。

使用
尽管整个Stackless Python是一个独立发行，它的上下文切换功能已经成功的打包为叫做greenlet的CPython扩展。它被用在很多库，比如gevent，用来提供CPython的绿色线程解决方案。Python现在已经接受了对绿色线程的原生解决方案：async/await。

Stackless Python广泛的使用在大规模多玩家在线游戏的实现和的邮件平台。

引用

参閱

 Erlang
 Limbo (程式语言)
 Go


外部链接
 Stackless Python Documentation for: 3.7-slp, 3.6-slp, 3.5-slp, 3.4-slp, 2.7-slp

 Multithreaded Game Scripting with Stackless Python by Harry Kalogirou
 Continuations and Stackless Python by Christian Tismer

Category:并发计算
Category:Python
Category:采用Python软件基金会许可证的软件