python之greenlet实现协程

不羁岁月 提交于 2020-01-29 03:49:57

greenlet+switch机制来实现协程

  • greenlet用于创建协程,switch用于进行协程之间的切换某个协程在执行的过程中可以随时的被其他协程通过switch函数来打断,转而去执行其他协程,当前协程的中断现场会被保留,一旦中断的协程再次获得cpu的执行权首先会恢复现场然后从中断处继续执行
    这种机制下的协程是同步,不能并发:
from greenlet import greenlet
from time import sleep
def func1():
    print("协程1")
    sleep(2)
    g2.switch()
    print("协程1恢复运行")

def func2():
    print("协程2")
    sleep(1)
    g3.switch()
def func3():
    print("协程3")
    sleep(1)
    g1.switch()

if __name__ == '__main__':
    # 使用greenlet来创建三个协程
    g1 = greenlet(func1)
    g2 = greenlet(func2)
    g3 = greenlet(func3)
    # print(g1)
    g1.switch() # 让协程g1取抢占cpu资源
'''
协程1
协程2
协程3
协程1恢复运行
'''

参考:https://blog.csdn.net/pythoncsdn111/article/details/96906350

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!