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

 

posted on 2017-08-16 06:34  momo8238  阅读(216)  评论(0编辑  收藏  举报