网络编程:进程创建--标准库multiprocessing模块(三--Pipe管道通信)
作者:互联网
1、管道通信
在内存中开辟一块空间,形成管道结构,多个进程使用同一个管道,即可通过对管道的读写操作进行通信
from multiprocessing import Pipe
2、创建管道对象
fd1,fd2 = Pipe(duplex = True)
功能: 创建管道
参数:默认表示双向管道
如果设置为False,则为单向管道
返回值 : 两个管道对象,分别表示管道的两端
如果是双向管道,则均可读写
如果是单向管道,则fd1只读, fd2只写
3、从管道读取信息
fd.recv()
功能:从管道读取信息
返回值 :读取到的内容
【注意】当管道为空则阻塞
4、向管道写入内容
fd.send(data)
功能: 向管道写入内容
参数: 要写入的内容
【注意】① 管道满时会阻塞 ② 可以写入几乎所有的python数据
5、其它
【1】q.full()
判断队列是否为满
【2】q.empty()
判断队列是否为空
【3】q.qsize()
获取队列中消息数量
【4】q.close()
关闭队列
from multiprocessing import Process,Pipe import os,time #创建管道 fd1,fd2 = Pipe(False) def fun(name): time.sleep(3) #向管道写入内容 fd2.send("hello" + str(name)) jobs = [] for i in range(5): p = Process(target = fun,args = (i,)) jobs.append(p) p.start() while True: #从管道读取内容 data = fd1.recv() print(data) for i in jobs: i.join() ~ #结果 hello0 hello1 hello3 hello2 hello4 (阻塞中...)
标签:fd1,读取,--,写入,Pipe,管道,fd2,multiprocessing 来源: https://www.cnblogs.com/longyuu/p/14248837.html