Python轻松实现“生产者—消费者模型”

假设一个生产者消费模型场景:

#生产者
import time
def producer():
    ret=[];
    for i in range(100):
        # time.sleep(0.1)
        ret.append('包子%s' %i)
    return ret
#消费者
def consumer(res):
    for index,baozi in enumerate(res):
        time.sleep(0.1)
        print("第%s个人,吃了%s"%(index,baozi))
res=producer()#生产者将所有的包子都生产完
consumer(res)#待包子都生产完后,消费者方可消费此包子

这是一个初级的“生产者-消费这者模型”,该模型存在者巨大问题:消费者必须等到生产者将产品全部生产出来方可消费,这对于大大增加了开销,于是我们有了改进版的模型

改进版的“生产者-消费者”模型

#改进版的消费者
def consumer(name):
    print('我是[%s],我准备吃包子了'%name)
    while True:
        baozi=yield
        time.sleep(0.6)#模拟吃包子的过程
        print("%s很开心地把[%s]吃掉了"%(name,baozi))

#改进版的生产者
def producer():
    c1=consumer("Bob")#获取一个消费者生成器,而不是直接吃包子
    c1.__next__()#启动生成器,开是吃包子了
    for i in range(10):
        time.sleep(0.6)#模拟生产包子耗费的时间
        print("开始制作包子%s" % i)
        c1.send("包子%s"%i)


producer()#生产包子

运行结果:

 

posted on 2019-02-28 23:06  小毅哥哥Bob  阅读(173)  评论(0)    收藏  举报

导航