用生成器做伪并发

#_author:Administrator
#date:2019/11/4
import time
def consumer(name):
print('%s 开始吃包子啦'%name)
while True:
baizi=yield
print('包子[%s]来了,被[%s]吃了'%(baizi,name))
def producer(name):
c1=consumer('A')
c2=consumer('B')
next(c1)
next(c2)
print('yuwei开始做包子啦')
for i in range(10):
time.sleep(1)
print('做了两个包子')
c1.send(i)
c2.send(i)
producer('yuwei')
#生成器都是迭代器,迭代器不一定是生成器
Output:

A 开始吃包子啦
B 开始吃包子啦
yuwei开始做包子啦
做了两个包子
包子[0]来了,被[A]吃了
包子[0]来了,被[B]吃了
做了两个包子
包子[1]来了,被[A]吃了
包子[1]来了,被[B]吃了
做了两个包子
包子[2]来了,被[A]吃了
包子[2]来了,被[B]吃了
做了两个包子
包子[3]来了,被[A]吃了
包子[3]来了,被[B]吃了
做了两个包子
包子[4]来了,被[A]吃了
包子[4]来了,被[B]吃了
做了两个包子
包子[5]来了,被[A]吃了
包子[5]来了,被[B]吃了
做了两个包子
包子[6]来了,被[A]吃了
包子[6]来了,被[B]吃了
做了两个包子
包子[7]来了,被[A]吃了
包子[7]来了,被[B]吃了
做了两个包子
包子[8]来了,被[A]吃了
包子[8]来了,被[B]吃了
做了两个包子
包子[9]来了,被[A]吃了
包子[9]来了,被[B]吃了

原文地址:https://www.cnblogs.com/startl/p/11791954.html