python进程和线程之间通信_python进程使用Queue和Pipe通信

本文介绍了Python中实现进程间通信的两种方式:Queue和Pipe。Queue适用于多个进程间通信,而Pipe则用于两个进程的一对一通信。通过示例代码详细展示了如何使用它们进行数据传递,并指出线程的queue.Queue不适用于进程间通信。
摘要由CSDN通过智能技术生成

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<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值