python-实现生产者消费者模型

时间:2023-03-09 18:22:28
python-实现生产者消费者模型

生产者消费者:包子铺不停的做包子,行人不停的买 ---> 这样就达到了目的--->包子的销售

两个不同的角色 包子铺,行人 只负责单一操作 让包子变成连接的介质.

 #_*_coding:utf-8_*_
from threading import Thread
from Queue import Queue
import time
class Procuder(Thread):
def __init__(self,name,queue):
self.__Name = name
self.__Queue = queue
super(Procuder,self).__init__()
def run(self):
while 1:
if self.__Queue.full():
time.sleep(3)
else:
time.sleep(1)
self.__Queue.put('**star**')
print '-->%s plus a star' % self.__Name
class Cunsumer(Thread):
def __init__(self,name,queue):
self.__Name = name
self.__Queue = queue
super(Cunsumer,self).__init__()
def run(self):
while 1:
if self.__Queue.empty():
time.sleep(3)
else:
time.sleep(1)
self.__Queue.get()
print '-->%s get a star' % self.__Name
maxque = Queue(maxsize=50) P1 = Procuder('p1',maxque)
P1.start()
P2 = Procuder('p2',maxque)
P2.start()
P3 = Procuder('p3',maxque)
P3.start()
for i in range(20):
print '_________________'
temp = Cunsumer(i,maxque)
temp.start()

于是问题来了 --->为什么我们需要这个模型?

1解耦:核心就是把生产者和消费者两个对象关系变得不紧密了

2缓冲:如果你是快递员,送一栋人很多的楼,你觉得是一个个的送,还是送到前台,发个短信让他们自己来拿好呢?

3防止阻塞:还是上面的例子,如果你是一个个的送 那么如果有个人 30分钟才会取 你是不是要等30分钟呢?