Manager:
from multiprocessing import Process, Manager import os def f(d, l): d[1] = '1' d['2'] = 2 d[0.25] = None l.append(os.getpid()) print(l) if __name__ == '__main__': with Manager() as manager: d = manager.dict()#生成一个字典,可在多个进程间共享和传递 l = manager.list(range(5))#生成一个列表,可在多个进程间共享和传递 print(l) p_list = [] for i in range(10): p = Process(target=f, args=(d, l)) p.start() p_list.append(p) for res in p_list: res.join() print(d) print(l)
pipe(管道):
from multiprocessing import Process, Pipe def f(conn): conn.send([42, None, 'hello'])#发送给parent_conn消息 print('from parent:',conn.recv())#接受parent的消息 conn.close() if __name__ == '__main__': parent_conn, child_conn = Pipe()#管道生成会返回两个对象 p = Process(target=f, args=(child_conn,)) p.start() print(parent_conn.recv()) # prints "[42, None, 'hello']",接受child_conn发送的消息 parent_conn.send('hello childs') p.join()