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)