伪并发就是假并发,只是中间内核处理切换时间太短忽略不计。
通过yield来写,加深生成器的理解、印象。
import time
def Eat_goods(name):
print("%s 准备吃包子啦!" %name)
while True:
baozi=yield
print("包子[%s]来了,被[%s]吃了!" %(baozi,name))
def Cook(name):
c = consumer('A')
c2 = consumer('B')
c.__next__()
c2.__next__()
print("%s开始准备做包子啦!"%name)
for i in range(10):
time.sleep(1)
print("做了2个包子!")
c.send(i)
c2.send(i)
Cook("xxx")
1、这里先用c.__next__() 第一次进入生成器
2、第二次进入生成器,使用c.send 这里将参数传递给yield二次进入后的baozi变量,第一次进入生成起不能传值,如果要用send进入,只能使用c.send(None).
3、生成器也可以和函数一样传递参数进去,c=consumer('A') 执行时通过__next__ 或者send方法执行。