1. 程式人生 > 實用技巧 >網路程式設計:程序建立--標準庫multiprocessing模組(三--Pipe管道通訊)

網路程式設計:程序建立--標準庫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 (阻塞中...)