多进程 队列 实现生产者消费者模型 python 笔记
来源:互联网 发布:php 统计文章浏览次数 编辑:程序博客网 时间:2024/06/06 18:11
JoinableQueue的实例p除了与Queue对象相同的方法之外还具有: q.task_done():使用者使用此方法发出信号,表示q.get()的返回项目已经被处理。如果调用此方法的次数大于从队列中删除项目的数量,将引发ValueError异常 q.join():生产者调用此方法进行阻塞,直到队列中所有的项目均被处理。阻塞将持续到队列中的每个项目均调用q.task_done()方法为止
from multiprocessing import Process,JoinableQueueimport time,random,osdef consumer(q): while True: res=q.get() time.sleep(random.randint(1,3)) print('%s 吃 %s' %(os.getpid(),res)) q.task_done() #向q.join()发送一次信号,证明一个数据已经被取走了def producer(name,q): for i in range(10): time.sleep(random.randint(1,3)) res='%s%s' %(name,i) q.put(res) print('%s 生产了 %s' %(os.getpid(),res)) q.join() if __name__ == '__main__': q=JoinableQueue() #类似Queue队列 多了task #生产者们:即厨师们 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,)) c1.daemon=True#c1 c2 设置为守护进程 c2.daemon=True #开始 p_l=[p1,p2,p3,c1,c2] for p in p_l: p.start() p1.join() p2.join() p3.join() print('主') #主进程等--->p1,p2,p3等---->c1,c2 #p1,p2,p3结束了,证明c1,c2肯定全都收完了p1,p2,p3发到队列的数据 #因而c1,c2也没有存在的价值了,应该随着主进程的结束而结束,所以设置成守护进程
阅读全文
0 0
- 多进程 队列 实现生产者消费者模型 python 笔记
- 生产者消费者模型-python-多进程
- 生产者消费者模型-python-多进程
- 队列实现生产者消费者模型
- python线程和进程,生产者消费者模型
- 生产者消费者模型,循环队列实现
- 通过阻塞队列实现生产者消费者模型
- 线程池 队列生产者消费者模型实现
- python使用队列实现生产者消费者
- Python 生产者消费者--队列实现
- python使用queue队列实现生产者消费者
- python生产者消费者模型
- 生产者-消费者模型实现
- 用生产者消费者模型实现的线程安全环形队列
- linux c语言实现队列及用于生产者消费者模型
- 微软100题(34)生产者消费者模型实现队列
- wait,notify,非阻塞队列实现生产者,消费者模型
- Python 多线程 生产者消费者模型
- Spring上传文件
- 树的前,中,后 序遍历
- 第2章-从头开始:自然数 2.2-加法
- BootStrap table 数据填充与分页应用总结
- Linux服务器性能出问题,排查这些参数指标
- 多进程 队列 实现生产者消费者模型 python 笔记
- 2017.10.1学习(1)
- Java解析Json数据
- 搭建及使用K8s集群 <使用ingress 暴露springcloud服务>
- idea .java文件 右下角有个红色 j 的解决方法
- 简单的录音功能,通过图片切换实现声音大小的显示
- java 空指针异常
- 优秀工程师-UIScrollView UIPageControl
- 【坐在马桶上看算法】算法1 最快最简单的排序——桶排序