生产包子,然后吃包子
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()
浙公网安备 33010602011771号