生产包子,然后吃包子

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()