生产者消费者模型
Posted wy3713
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生产者消费者模型相关的知识,希望对你有一定的参考价值。
什么是消费者生产者模型:
生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。
基于队列(Queue)实现消费者模型
import time import random from multiprocessing import JoinableQueue,Process # join 阻塞 def consumer(q,name): while True: food = q.get() print(‘%s 吃了 %s‘%(name,food)) time.sleep(random.random()) q.task_done() def producer(q,name,food,n=10): for i in range(n): time.sleep(random.random()) fd = food+str(i) print(‘%s 生产了 %s‘%(name,fd)) q.put(fd) q.join() if __name__ == ‘__main__‘: q = JoinableQueue() c1 = Process(target=consumer,args=(q,‘alex‘)) c1.daemon = True c1.start() c2 = Process(target=consumer, args=(q, ‘alex‘)) c2.daemon = True c2.start() p1 = Process(target=producer,args=(q,‘太白‘,‘泔水‘)) p1.start() p2 = Process(target=producer, args=(q, ‘egon‘, ‘鱼刺‘)) p2.start() p1.join() p2.join()
基于JoinableQueue实现生产者消费者模型
from multiprocessing import Process,JoinableQueue import time,random,os def consumer(q): while True: res=q.get() time.sleep(random.randint(1,3)) print(‘