管道通信Pipe

通信原理:
  在内存中开辟管道空间,生成管道操作对象,多个进程使用“同一个”管道对象进程操作即可实现通信

函数方法:

fd1,fd2 = Pipe(duplex = True)
  功能: 创建管道
  参数:默认表示双向管道
    如果设置为False则为单向管道
  返回值 : 两个管道对象,分别表示管道的两端
     如果是双向管道则均可读写
     如果是单向管道则fd1只读 fd2只写

fd.recv()
  功能:从管道读取到的信息
  返回值:读取到的内容
    *如果管道为空则阻塞

fd.send(data)
  功能:向管道写入内容
  参数:要写入的内容
    *可以发送python数据类型

代码示例:
from multiprocessing import Process,Pipe
import os,time

#创建管道对象
fd1, fd2 = Pipe()

def fun(name):
    time.sleep(3)
    #向管道写入内容
    fd1.send("hello "+str(name))

def fun1():
    time.sleep(2)
    data = fd2.recv()
    print(data)

jobs = []
#这里创建了5个子进程进行发消息
for i in range(5):
    p = Process(target = fun,args = (i,))
    jobs.append(p)
    p.start()
#创建5个子进程收消息
for i in range(5):
    #读取管道
    p1 = Process(target = fun1)
    p1.start()

for i in jobs:
    i.join()

p1.join()
原文地址:https://www.cnblogs.com/zengsf/p/9637901.html