Greenlets 是用于进程内并发编程的轻量级协程。
“greenlet”包是 Stackless 的一个分支,Stackless 是 CPython 的一个版本,它支持称为“tasklets”的微线程。Tasklets 伪并发运行(通常在一个或几个 OS 线程中),并通过“channel”上的数据交换进行同步。
另一方面,“greenlet”是一种更原始的微线程概念,没有隐式调度;换句话说,就是协程。当您想精确控制代码的运行时间时,这非常有用。您可以在 greenlet 之上构建自定义调度的微线程;但是,greenlets 本身似乎就很有用,可以用来构建高级控制流结构。例如,我们可以重现生成器;与 Python 自带的生成器不同的是,我们的生成器可以调用嵌套函数,并且嵌套函数也可以产生值。(此外,您不需要“yield”关键字。请参阅 test_generator.py 中的示例)。
Greenlets 作为 C 扩展模块提供给常规未修改的解释器。
有几个库使用 Greenlet 作为 Python 内置协程支持的更灵活的替代方案:
获取 Greenlet 最简单的方法是使用 pip 安装它:
pip install greenlet
源代码归档和二进制分发可在 python 包索引上获得,地址为:https://pypi.org/project/greenlet
源代码仓库托管在 github 上:https://github.com/python-greenlet/greenlet
文档可在:https://greenlet.readthedocs.io 上找到。