协程 2.greenlet

greenlet

greenlet
    Greenlet是python的一个C扩展,提供可自行调度的协程
    当一个greenlet遇到IO操作,如访问网络、文件操作时,就自动切换到其他greenlet,等IO操作完成,再在适当的时间切换回来继续执行
    greenlet实现的协程在yield value时只能将value返回给调用者caller
    greenlet用switch来表示协程的切换,从一个协程切换到另一个协程需要显示指定

greenlet
greenlet.greenlet(func)
        功能:创建greenlet对象
        参数:
            target:协程执行的函数名

obj.switch(value)
        功能:切换到指定的协程target,并从上一次保存状态的位置开始继续向下执行
        返回值:yield value

import time
from greenlet import greenlet

# 创建work1
def work1(n):
    while True:
        print(f'work1----------{n}')
        time.sleep(0.5)
        # 切换到另一个函数
        res = g2.switch('run2')
        print(res)

# 创建work2
def work2(m):
    while True:
        print(f'{m}----------work2')
        time.sleep(0.5)
        # 切换到另一函数
        res = g1.switch('run1')
        print(res)


if __name__ == '__main__':
    # 创建greenlet对象
    g1 = greenlet(work1)
    g2 = greenlet(work2)

    # 起始执行的函数
    g1.switch('run1')
    print('No')
	
	
work1----------run1
run2----------work2
run1
work1----------run1
run2
run2----------work2
run1
work1----------run1
run2
run2----------work2
run1
上一篇:零基础入门C语言超详细的字符串详解


下一篇:python中asyncio异步编程