用yield 实现协程 (包子模型)

Posted my-love-is-python

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用yield 实现协程 (包子模型)相关的知识,希望对你有一定的参考价值。

协程是一种轻量级的线程

无需线程上下级的开销, 所有的协程都在一个线程内执行

 

import time

def consumer(name):
print(‘%s is start to eat baozi‘%name)
while True:
baozi = yield #用于传递
print(‘%s is start to eat %s baozi‘%(name, baozi))


def Producter(name):
print(‘%s is start to make baozi‘%name)

c1.__next__() #c1执行一次
c2.__next__() #c2 执行一次

for i in range(10):
time.sleep(2)
c1.send(i) #给生成器c1传递参数,生成器在yield处启动执行,在yield重新中断
c2.send(i)

if __name__ == ‘__main__‘:
    c1 = consumer(‘wang‘)  #生成c1 生成器
c2 = consumer(‘li‘) #生成c2 生成器
Producter(‘alex‘)






 





























以上是关于用yield 实现协程 (包子模型)的主要内容,如果未能解决你的问题,请参考以下文章

协程函数

用yield实现协程 和asyncio模块

00.用 yield 实现 Python 协程

Python协程实现生产者消费者模型

Python生成器:单线程协程

Python中协程的实现