python—多进程之进程之间通信

在人生的道路上,不管是潇洒走一回,或者是千山独行,皆须是自己想走的路,虽然,有的人并不是很快就能找到自己的方向和道路,不过,只要坚持到底,我相信,就一定可以找到自己的路,只要找到路,就不必怕路途遥远了。

导读:本篇文章讲解 python—多进程之进程之间通信,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一、Queue
1、导入:from multiprocessing import Queue
2、进程间数据通信之Queue示意图:
在这里插入图片描述
mq.put(i) 子进程1发送数据到队列Queue中,子进程2和子进程3从队列中获取数据
Queue可以称为通信的中间件

3、需求:
我们有两个进程,一个进程负责写(write)一个进程负责读(read)。当写的进程写完某部分以后要把数据交给读的进程进行使用,这时候我们就需要使用到了multiprocessing模块的Queue (队列):write(将写完的数据交给队列,再由队列交给read()
在这里插入图片描述
在这里插入图片描述
mq.put(i) writer进程负责把数据写入Queue
mq.get(True) 负责从Queue中读取数据,get函数是一个阻塞的函数,当队列中没有数据时,会一直阻塞在这里。
pr.terminate() 强制杀死pr进程

执行结果:
在这里插入图片描述
二、Pipe实现进程间通信
Pipe直译过来的意思是”管”或”管道”,该种实现多进程编程的方式,和实际生活中的管〈管道)是非常类似的。通常情况下,管道有2个口,而Pipe 也常用来实现2个进程之间的通信,这2个进程分别位于管道的两端,—端用来发送数据,另一端用来接收数据。
1、导入:from multiprocessing import Pipe
2、进程间数据通信之Pipe示意图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1、p1,p2=Pipe():Pipe创建之后得到管道的两端,必须这样写,不能写成(p1=Pipe(),p2=Pipe())
2、self.pipe.send(i) :write进程负责把数据通过管道发送给另一个进程
3、value=self.pipe.recv():当管道中没有数据,该行代码一直阻塞
4、recv函数是阻塞函数

三、Queue和Pipe的区别:
Queue:实现多个进程之间通信的
Pipe:实现1对1,单个进程之间的通信

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123611.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!