greenlet是一个协程库,先看一个例子
from greenlet import greenlet
def T1():
print("T1.1")
gr2.switch()
print("T1.2")
def T2():
print("T2.1")
gr1.switch()
print("T2.2")
gr1 =greenlet(T1)
gr2 =greenlet(T2)
gr1.switch()
运行结果:
T1.1
T2.1
T1.2
gr1=greenlet(T1),创建一个“协程”对象gr1,其参数是一个函数T1,也就是说T1将在这个协程里运行。同理gr2=greenlet(T2),是创建另一个“协程”对象gr2,函数T2将在这个协程里运行。两个协程对象被创建以后,并不马上执行,而是需要用户(程序)主动调度,这个调度函数就是协程对象的成员函数switch。当有协程被调度时,另一个协程就会被挂起。
代码运行情况见下表:
![](https://i-blog.csdnimg.cn/blog_migrate/0613d8ad9fde2cadeffdb13eeb8844b9.png)
上例充分说明,greenlet仅仅是对协程对象的一个封装,但是协程之间的切换仍然需要用户(编程者/应用程序)主动调度。