首页 > 其他 > 详细

生产者消费者模型

时间:2020-04-23 19:20:29      阅读:41      评论:0      收藏:0      [点我收藏+]
from multiprocessing import Process, JoinableQueue
import time
import random


def producer(name, food, q):
for i in range(5):
data = ‘%s生产了%s%s‘ % (name, food, i)
time.sleep(random.randint(1, 3))
print(data)
q.put(‘%s生产的%s%s‘ % (name, food, i))


def consumer(name, q):
while True:
food = q.get()
time.sleep(random.randint(1, 3))
print(‘%s吃了%s‘ % (name, food))
q.task_done() # 告诉队列已经从里面取出一个数据并处理完毕


if __name__ == ‘__main__‘:
q = JoinableQueue() # 存一个数据,内部计数+1,取一个,计数器—1
p1 = Process(target=producer, args=(‘egon‘, ‘包子‘, q))
p2 = Process(target=producer, args=(‘tank‘, ‘火锅‘, q))
c1 = Process(target=consumer, args=(‘小明‘, q))
c2 = Process(target=consumer, args=(‘天王盖地虎‘, q))
p1.start()
p2.start()
c1.daemon = True
c2.daemon = True
p1.join() # 让主进程等待子进程运行结束之后再运行
p2.join()
c1.start()
c2.start()
# p1.join() # 让主进程等待子进程运行结束之后再运行
# p2.join()
q.join() # 基于JoinableQueue,q.join() 当计数器为0的时候 才往后运行

生产者消费者模型

原文:https://www.cnblogs.com/0B0S/p/12762667.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!