from multiprocessing import Queue, Process import threading,os def con(process_queue): print("打印子進程id:",os.getpid()) process_queue.put("添加的數據") if __name__ == "__main__": # 主進程建立一個隊列 print("主進程id", os.getpid()) q = Queue() # 啓動一個子進程對隊列進行更改,須要將對象在初始化的時候傳過去 p = Process(target=con, args=(q,)) p.start() # 主進程從隊列中獲取數據 print(q.get()) p.join()# 等待子進程介紹,再退出程序
from multiprocessing import Process, Pipe def pip_child(conn): conn.send("這個從子進程發出1") conn.send("這個從子進程發出2") print(conn.recv()) conn.close() if __name__ == "__main__": # 創建進程間的通信管道 parent_conn, child__conn = Pipe() # 建立子進程的時候傳遞一端給子進程,執行子進程 p = Process(target=pip_child, args=(child__conn,)) p.start() input("子進程已發送數據,按鍵繼續") # 父進程開始接受數據 # while len(parent_conn.recv())>=0: # print(parent_conn.recv()) print(parent_conn.recv()) print(parent_conn.recv()) parent_conn.send("from main process.")
from multiprocessing import Process, Manager import os def change(d, l): """ :param d:須要更改的字段 :param l: 進程列表 :return: """ # 進程id d[os.getpid()] = os.getpid() l.append(os.getpid()) print(d,l) if __name__ == "__main__": with Manager() as manager: # 主進程生成一個能夠在多個進程間修改的字典 d = manager.dict() # 主進程生成一個列表,能夠在多個進程間進行修改 l = manager.list(range(5)) # 存儲全部的進程 p_list = [] for i in range(10): p = Process(target=change, args=(d, l)) p.start() p_list.append(p) #等待執行結果 for i in p_list: i.join() print("----------打印最後結果----------") print(d) print(l)