1. 程式人生 > >Python 程序,管道( multiprocessing.Pipe() ),程序通訊(雙向通訊)

Python 程序,管道( multiprocessing.Pipe() ),程序通訊(雙向通訊)

#a,b=(1,2)
#print(a,b)
#管道可以雙向通訊,佇列只可以單向通訊(一個程序只能發資料,另一個只能收資料)
import multiprocessing
import os
def func(conn):  #conn管道型別
    conn.send(["a","b","c","d","e"])  #傳送的資料
    print("子程序",os.getpid(),conn.recv())  #收到的資料
    conn.close()  #關閉


if  __name__=="__main__":
    conn_a,conn_b=multiprocessing.Pipe() #建立一個管道,兩個口
    #print(id(conn_a),id(conn_b))
    #print(type(conn_a), type(conn_b)) #multiprocessing.connection.PipeConnection型別
    p=multiprocessing.Process(target=func,args=(conn_a,))
    p.start()
    conn_b.send([1,2,3,4,5,6,7])
    print("主程序:",os.getpid(),conn_b.recv())
    p.join()