这篇文章主要介绍了Python实现多进程通信实例分析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们可以仔细看看 。
文章插图
操作系统会为每一个创建的进程分配一个独立的地址空间,不同进程的地址空间是完全隔离的,因此如果不加其他的措施,他们完全感觉不到彼此的存在 。那么进程之间怎么进行通信?他们之间的关联是怎样的?实现原理是什么?本文就来借助Python简单的聊一下进程之间的通信?还是那句话,原理是相同的,希望能透过具体的例子来体会一下本质的东西 。
下面尽量以简单的方式介绍一下每一类通信方式,具体的细节可以参照文档使用;
1. 管道
先来看一下最简单、古老的一种IPC:管道 。通常指的是无名管道,本质上可以看做一种文件,只存在于内存当中,不会存盘 。不同进程通过系统提供的接口来向管道中读取或者写入数据 。
也就是说我们通过这样一个中间介质为进程提供交流的方式 。无名管道的局限在于一般只用于有直接关联关系的父子进程 。下面通过一个简单的例子来看一下其用法 。
from multiprocessing import Process, Pipe def pstart(pname, conn): conn.send("Data@subprocess") print(conn.recv()) # Data@parentprocess if __name__ == '__main__': conn1, conn2 = Pipe(True) sub_proc = Process(target=pstart, args=('subprocess', conn2,)) sub_proc.start() print (conn1.recv()) # Data@subprocess conn1.send("Data@parentprocess") sub_proc.join()管道通信三步曲:
- 创建Pipe,得到两个connection对象conn1和conn2;
- 父进程持有conn1,将conn2传递给子进程;
- 父子进程通过对持有的connection对象进行send和recv操作以进行数据传递和接受;
Returns a pair (conn1, conn2) of Connection objects representing the ends of a pipe.
If
推荐阅读
- 移动端真机调试方法
- 一文看懂MySQL中基于XA实现的分布式事务
- 32个常用 Python 实现
- 8 个 Python 实用脚本,收藏备用
- Mac平台上实现视频采集
- 梦见从手上拉出铁线虫 梦见从手上抽出好多线虫
- 关于茶或促进糖尿病伤口愈合的研究表明茶多酚在其中发挥作用
- 青椒田鸡腿
- 泰式甜辣虾
- 2022天猫圣诞活动大还是元旦活动大,圣诞和元旦哪个打折多