ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

生产者消费模型

2019-08-06 23:55:44  阅读:142  来源: 互联网

标签:__ 消费 name 生产者 模型 args Process data


"""
生产者消费者模型(celery消息队列)
生产者:生产的数据(做包子的)
消费者:处理数据的(吃包子的)
生产者消费模型是用来平衡生产者与消费者之间的能力的,例如有时候消费者消费的速度太快,
生产者来不及生产那么多的数据,或者有时候消费者的消费速度太慢.生产者生产的数据大量的累积在一起
有了这个生产者消费模型之后,就可以平衡双方的能力了
"""
from multiprocessing import Process,Queue,JoinableQueue
import time
import random


def producer(name,food,q):
# 产生,生产数据的,生产好数据之后就放到管道中去,其他某一个进程就可以取用了
for i in range(3):
data = '%s生产了%s%s'%(name,food,i)
time.sleep(random.randint(1,3))
q.put(data) ###放到管道q中去
print(data)


def consumer(name,q):
while True:
data = q.get()
if data == None:break
time.sleep(random.randint(1,3))
print('%s吃了%s' % (name,data))
q.task_done() # 已经从队里中拿到数据 并且处理完毕了


if __name__ == '__main__':
q = JoinableQueue()
p = Process(target=producer,args=('大厨jason','肉包子',q))
p1 = Process(target=producer,args=('配菜owen','馒头',q))
c = Process(target=consumer,args=('吃货egon',q))
c1 = Process(target=consumer,args=('坑货尚老师',q))
p.start()
p1.start()
c.daemon = True ##守护进程
c1.daemon = True ##守护进程
c.start()
c1.start()

p.join()
p1.join()
q.join() # 等带队列中所有的数据都被取干净





标签:__,消费,name,生产者,模型,args,Process,data
来源: https://www.cnblogs.com/1832921tongjieducn/p/11312585.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有