Greenlet-手动切换
yield()是自己写的协程,Greenlet( )是已经封装好了的协程。
协程:遇到 I/O 操作就切换到别的地方了(先去处理其他携程去了)。等原协程的 I/O 操作一完成就切回去。这样就把 I/O的时间给节省出来了。
Greenlet:手动挡
gevent: 自动挡
from greenlet import greenlet #是手动切换 def test1(): print('12') gr2.switch() print('34') gr2.switch() def test2(): print('56') gr1.switch() print('78') gr1 = greenlet(test1) #生成一个协程 gr2 = greenlet(test2) #再生成一个协程 gr1.switch() #类似于yield中的next,程序才开始真正运行。
运行结果:
12 56 34 78