python Pipe 雙管道通訊

2022-05-24 16:03:09 字數 1196 閱讀 4815

管道:是python多程序中一種交換資料的方式

1

from multiprocessing import

process,current_process,queue,pipe

2import

time

3import

pickle45

deffunc_left(q,left):

6for a in range(5000):

7 b = q.get()#

從佇列中獲取資料

8print('

向右管道傳送資料

',b)

9 msg = pickle.dumps(b)#

給右管道傳送資料 資料是序列化之後的資料10#

left.send(msg)#傳送資料

1112

13def

func_right(q,right):

14for a in range(5000):15#

從佇列中獲取資料

16 msg = pickle.loads(right.recv())#

從右管道接受資料 資料是反序列化之後的資料

17print('

接受到左管道傳送的資料

',msg)#

列印出接受的資料

1819

2021

2223

defmain():

24 q = queue()#

新建立乙個queue共享資料

25for a in range(10001):

26q.put(a)

27 left,right = pipe()#

建立雙管道

28 p1 = process(target = func_left,name = '

左管道',args=(q,left))

29 p2 = process(target = func_right,name = '

右管道',args=(q,right))

30p1.start()

31p2.start()

3233

34if

__name__ == '

__main__':

35 main()

管道預設是阻塞狀態,雙通管道

雙管道實現程序資料通訊

我用的伺服器端程式如下 include cliser.h include int main int argc,char argv printf res d n res read res read res,temp data ptr,256 printf read res d n read res i...

Linux 管道通訊

一 定義 管道是單向的 先進先出的。它將乙個程式的輸入和另乙個程式的輸出連線起來。資料被乙個程序讀出後,將被從管道中刪除。分為無名和有名管道兩種。前者用於父程序和子程序間的通訊,後者用於同一系統的兩個程序間通訊。二 無名管道 int pipe int fd 2 其中,fd 0 用於讀管道,fd 1 ...

Linux管道通訊

現在在linux 中使用較多的程序間通訊方式主要有以下幾種。1 管道 pipe 及有名管道 named pipe 管道可用於具有親緣關係程序間的通訊,有名管道,除具有管道所具有的功能外,它還允許無親緣關係程序間的通訊。2 訊號 signal 訊號是在軟體層次上對中斷機制的一種模擬,它是比較複雜的通訊...