python进程使用Queue和Pipe通信
发布时间:2020-06-09 21:02:47
来源:亿速云
阅读:261
作者:元一
背景
当使用多个线程操作任务的时候,如果线程间有需要通信的地方,那么不可避免的要实现到线程间的通信,来互相通知消息,同步任务的执行。
一.通信
1.线程threading共享内存地址,进程与进程Peocess之间相互独立,互不影响(相当于深拷贝);
2.在线程间通信的时候可以使用Queue模块完成,进程间通信也可以通过Queue完成,但是此Queue并非线程的Queue,进程间通信Queue是将数据 pickle 后传给另一个进程的 Queue,用于父进程与子进程之间的通信或同一父进程的子进程之间通信;
queue
python中的queue模块其实是对数据结构中栈和队列这种数据结构的封装,把抽象的数据结构封装成类的属性和方法
使用Queue线程间通信:
1
2
3
4
5#导入线程相关模块
importthreading
importqueue
q=queue.Queue()
使用Queue进程间通信,适用于多个进程之间通信:
1
2
3
4
5# 导入进程相关模块
frommultiprocessingimportProcess
frommultiprocessingimportQueue
q=Queue()
使用Pipe进程间通信,适用于两个进程之间通信(一对一):
1
2
3
4
5# 导入进程相关模块
frommultiprocessingimportProcess
frommultiprocessingimportPipe
pipe=Pipe()
二.python进程间通信Queue/Pipe使用
python提供了多种进程通信的方式,主要Queue和Pipe这两种方式,Queue用于多个进程间实现通信,Pipe用于两个进程的通信;
1.使用Queue进程间通信,Queue包含两个方法:put():以插入数据到队列中,他还有两个可选参数:blocked和timeout。详情自行百度
get():从队列读取并且删除一个元素。同样,他还有两个可选参数:blocked和timeout。详情自行百度
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16<