生产包子,然后吃包子
def producer(): #先定义一个生产10哥包子
ret=[]
for i in range(10):
ret.append("包子%s" %i)
return ret
def consumer(res): #定义一个吃包子的过程
for index,baozi in enumerate(res): #enumerate是什么意思,自己再看一下
print("第%s个人吃了%s" %(index,baozi))
res=producer()
consumer(res)
但是在实际中,不是都生产了之后再去吃,而是一边生产一边吃的过程。(并发的操作,同时运行两个程序,a程序运行到一半就到B程序,在涉及到a程序)-单线程中的并发
所以用生成器实现这个效果!!
补充知识点:send
.send函数()可以帮助生成器函数继续执行,并将send括号里的值传给当前yield(注意是,当前停留位置的yield被赋值)。
import time def consumer(name): print("i am %s,i am going to eat baozi"%name) while True: baozi=yield time.sleep(1) print("%s have ate the %s"%(name,baozi)) def producer(): c1=consumer("wupeiqi") #生成器函数 c2=consumer("yuanhaosb") c1.__next__() c2.__next__() for i in range(10): time.sleep(1) #需要1秒生产包子 c1.send("baozi%s"%i) c2.send("baozi%s"%i) producer()