python MultiProcessing标准库使用Queue通信的注意要点
2017-07-17 22:32
513 查看
今天原本想研究下MultiProcessing标准库下的进程间通信,根据 MultiProcessing官网 给的提示,有两种方法能够来实现进程间的通信,分别是pipe和queue。因为看queue顺眼,就想着拿queue实现,后来,被坑了....于是有了这篇文章。
我按照 python标准库之MultiProcessing库的研究 (1) 里面的代码来的,结果就是不断的出错,死过就是不出结果,看看程序:
其实没什么,就是在apply_async函数中加了个Queue对象而已。
可是死活就是不行。后来查了这篇文章 python多进程编程:使用Queue,Pool启动子进程失败问题
后来在官网仔细找了下,发现:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/25/c14b984067b70da873b2289c5250100a.jpg)
so,就是我需要再加上一个manager,赶明再试试...
我按照 python标准库之MultiProcessing库的研究 (1) 里面的代码来的,结果就是不断的出错,死过就是不出结果,看看程序:
from multiprocessing import Pool, queues import os def func(msg, q): q.put([msg, None, 'hello']) print(os.getpid()) if __name__ == '__main__': q = queues.Queue() pool = Pool(4) for i in range(4): pool.apply_async(func, (i, q, )) print("Mark~ Mark~ Mark~~~~~~~~~~~~~~~~~~~~~~") print(q.qsize()) pool.close() pool.join() # 调用join之前,先调用close函数,否则会出错。执行完close后不会有新的进程加入到pool,join函数等待所有子进程结束 for i in range(q.qsize()): print(q.get())
其实没什么,就是在apply_async函数中加了个Queue对象而已。
可是死活就是不行。后来查了这篇文章 python多进程编程:使用Queue,Pool启动子进程失败问题
后来在官网仔细找了下,发现:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/25/c14b984067b70da873b2289c5250100a.jpg)
so,就是我需要再加上一个manager,赶明再试试...
相关文章推荐
- qwebsocket使用wss通信时的应注意的问题
- hibernat使用junit测试类测试hibernate的各种方法说明及注意要点
- 使用异步操作时的注意要点(翻译)
- 带有加解密通信的应用安装为windows服务时,需要注意使用的账户
- 使用 CreateTimerQueueTimer 定时器时需要注意的一个参数
- 带有加解密通信的应用安装为windows服务时,需要注意使用的账户
- 使用VMWare安装SAID3时的几个注意要点
- 安装和使用Oracle VM VirtualBox中的要点,注意事项和遇到的问题
- 总结Go语言中defer的使用和注意要点
- solr使用时需要注意的要点针对solr的schma.xml文件
- FFT user guide -QII 的使用注意要点
- MFC定时器的使用注意要点
- 常见进程间的几种通信方式以及使用注意点
- 烙铁使用注意事项及元器件件焊接要点
- 线程间无需特别的手段进行通信,因为线程间可以共享数据结构,也就是一个全局变量可以被两个线程同时使用,不过要注意的是线程间需要做好同步。
- 3.ruby语法基础,全部变量,实例变量,类变量,局部变量的使用和注意的要点
- QTableWidget使用注意要点总结
- ACE_Message_Queue<ACE_MT_SYNCH>::putq ()使用时需要注意的地方
- SVN使用之注意要点
- php抽象类使用要点与注意事项分析