使用manager在进程之间事项共享数据.

栗子:

主进程调用manager,创建一个字典d和一个列表l,启动十个子进程,每个子进程都向d和l中放数据

from multiprocessing import Process,Manager
import os



def func(d,l):
d[os.getpid()] = os.getpid()
l.append(os.getpid())
print(d)
print(l)



if __name__ == '__main__':
with Manager() as manager:#不需要加锁 自动加了
d = manager.dict()#使用manager创建一个字典对象
l = manager.list(range(5))#使用manager创建一个列表对象
p_list = []
for i in range(10):
p = Process(target=func,args=(d,l))
p_list.append(p)
p.start()
for p in p_list:
p.join()
print(d)
print(l)

输出结果:

D:\7_Python\Python37\python.exe D:/7_Python/S14/其他/aaaa.py
{10120: 10120}
[0, 1, 2, 3, 4, 10120]
{10120: 10120, 9700: 9700}
[0, 1, 2, 3, 4, 10120, 9700]
{10120: 10120, 9700: 9700, 4968: 4968}
[0, 1, 2, 3, 4, 10120, 9700, 4968]
{10120: 10120, 9700: 9700, 4968: 4968, 14212: 14212}
[0, 1, 2, 3, 4, 10120, 9700, 4968, 14212]
{10120: 10120, 9700: 9700, 4968: 4968, 14212: 14212, 2884: 2884}
[0, 1, 2, 3, 4, 10120, 9700, 4968, 14212, 2884]
{10120: 10120, 9700: 9700, 4968: 4968, 14212: 14212, 2884: 2884, 4860: 4860}
[0, 1, 2, 3, 4, 10120, 9700, 4968, 14212, 2884, 4860]
{10120: 10120, 9700: 9700, 4968: 4968, 14212: 14212, 2884: 2884, 4860: 4860, 9712: 9712}
[0, 1, 2, 3, 4, 10120, 9700, 4968, 14212, 2884, 4860, 9712]
{10120: 10120, 9700: 9700, 4968: 4968, 14212: 14212, 2884: 2884, 4860: 4860, 9712: 9712, 14164: 14164}
[0, 1, 2, 3, 4, 10120, 9700, 4968, 14212, 2884, 4860, 9712, 14164]
{10120: 10120, 9700: 9700, 4968: 4968, 14212: 14212, 2884: 2884, 4860: 4860, 9712: 9712, 14164: 14164, 15000: 15000, 2948: 2948}
[0, 1, 2, 3, 4, 10120, 9700, 4968, 14212, 2884, 4860, 9712, 14164, 15000, 2948]
{10120: 10120, 9700: 9700, 4968: 4968, 14212: 14212, 2884: 2884, 4860: 4860, 9712: 9712, 14164: 14164, 15000: 15000, 2948: 2948}
[0, 1, 2, 3, 4, 10120, 9700, 4968, 14212, 2884, 4860, 9712, 14164, 15000, 2948]
{10120: 10120, 9700: 9700, 4968: 4968, 14212: 14212, 2884: 2884, 4860: 4860, 9712: 9712, 14164: 14164, 15000: 15000, 2948: 2948}
[0, 1, 2, 3, 4, 10120, 9700, 4968, 14212, 2884, 4860, 9712, 14164, 15000, 2948]

Process finished with exit code 0
12-22 15:20
查看更多