码迷,mamicode.com
首页 > 其他好文 > 详细

5.1.10 生产者与消费者模型

时间:2018-06-16 18:40:14      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:消费   target   code   art   tar   none   分布   ESS   range   

用途:

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

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

    解耦合

    如果使用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()

 

5.1.10 生产者与消费者模型

标签:消费   target   code   art   tar   none   分布   ESS   range   

原文地址:https://www.cnblogs.com/beallaliu/p/9190996.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!