網路程式設計:程序建立--標準庫multiprocessing模組(三--Pipe管道通訊)
阿新 • • 發佈:2021-01-08
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
(阻塞中...)