5.1.10 生产者与消费者模型

用途:

     程序中有两类角色,一类用来生产数据,一类用来消费数据。

    生产者消费者模型引入队列 

    解耦合

    如果使用multiprocessing中的Queue的这种生产消费模型,必须在同一台机器上,集中式

   如何分布?

   

from multiprocessing import Process,Queue
import time

def producer(q):
    for i in range(10):
        res='包子%s' %i
        time.sleep(0.5)
        print('生产者生产了%s' %res)

        q.put(res)

def consumer(q):
    while True:
        res=q.get()
        if res is None:break
        time.sleep(1)
        print('消费者吃了%s' % res)



if __name__ == '__main__':
    #容器
    q=Queue()

    #生产者们
    p1=Process(target=producer,args=(q,))
    p2=Process(target=producer,args=(q,))
    p3=Process(target=producer,args=(q,))

    #消费者们
    c1=Process(target=consumer,args=(q,))
    c2=Process(target=consumer,args=(q,))

    p1.start()
    p2.start()
    p3.start()
    c1.start()
    c2.start()

# 发送生产者结束信号 解决消费者如何知道生产者不生产数据 p1.join() p2.join() p3.join() q.put(None) q.put(None)
print('')

猜你喜欢

转载自www.cnblogs.com/beallaliu/p/9190996.html