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()#生产包子
运行结果:

唯大英雄能本色,是真名士自风流!
浙公网安备 33010602011771号