通信原理:
在内存中开辟管道空间,生成管道操作对象,多个进程使用“同一个”管道对象进程操作即可实现通信
函数方法:
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()