进程彼此之间互相隔离,要实现进程间通信(IPC),multiprocessing模块支持两种形式:队列和管道,这两种方式都是使用消息传递的
进程通信
队列
import multiprocessing
def run(q):
q.put('hello')
q.put('mainprocess')
print('subprocess q ID:',id(q))
if __name__ == '__main__':
q=multiprocessing.Queue()#用于进程间通信的队列
t=multiprocessing.Process(target=run,args=(q,))
t.start()
t.join()
print('main process q ID:',id(q))
print(q.get())
print(q.get())
'''
subprocess q ID: 2359100652232
main process q ID: 2025858869736
hello
mainprocess
'''
管道
import multiprocessing
def foo(conn):
data=conn.recv()
print(data)
conn.send('subprocess conn id is %s'%(id(conn)))
print('this is subprocess