多进程之间的数据共享
不用进程池的多进程的数据共享
from multiprocessing import Process,Queue
queue = Queue()
def func(a,q):
re = f'我是子进程{a}:我放入data{a}'
q.put(re)
if __name__ == '__main__':
ls = []
for i in range(10):
p = Process(target=func,args=(i,queue))
p.start()
ls.append(p)
for x in ls:
x.join()
print('===========我是主进程=============')
for i in range(queue.qsize()):
print(queue.get())
运行结果:
D:\python3.7.3\python.exe H:/Python培训/day10DataSharing/test.py
===========我是主进程=============
我是子进程0:我放入data0
我是子进程3:我放入data3
我是子进程2:我放入data2
我是子进程4:我放入data4
我是子进程1:我放入data1
我是子进程5:我放入data5
我是子进程7:我放入data7
我是子进程6:我放入data6
我是子进程8:我放入data8
我是子进程9:我放入data9
Process finished with exit code 0
使用进程池的多进程数据共享
from multiprocessing import Manager,Pool
def func(info):
a,q = info
re = f'我是子进程{a}:我放入data{a}'
q.put(re)
if __name__ == '__main__':
ls = []
queue = Manager().Queue()
p_pool = Pool()
p_pool.map(func,[[i,queue] for i in range(10)])
p_pool.close()
p_pool.join()
print('=========我是主进程==========')
for i in range(queue.qsize()):
print(queue.get())
运行结果:
D:\python3.7.3\python.exe H:/Python培训/day10DataSharing/test.py
=========我是主进程==========
我是子进程0:我放入data0
我是子进程1:我放入data1
我是子进程2:我放入data2
我是子进程3:我放入data3
我是子进程4:我放入data4
我是子进程5:我放入data5
我是子进程6:我放入data6
我是子进程7:我放入data7
我是子进程9:我放入data9
我是子进程8:我放入data8
Process finished with exit code 0