Если вы хотите поделиться своими словарями в списке, вам нужно не только создать список, но и словари через Manager()
. Например,
msg = manager.list()
msg.append(manager.dict({ 1: "A", 2: "B"}))
В противном случае изменения вашего словаря внутри процесса не будут зарегистрированы. Возможно, вы захотите посмотреть этот ответ для получения подробной информации.
Расширенная версия связанного примера может выглядеть примерно так:
from multiprocessing import Process, Manager
def f(msg):
for ele in msg:
if 1 in ele:
ele[1] += "hi"
if 100 in ele:
ele[100] += "5"
if __name__ == '__main__':
manager = Manager()
msg = manager.list()
msg.append(manager.dict({ 1: "A", 2: "B"}))
msg.append(manager.dict({20 : "AAA", 30 : "BBB"}))
msg.append(manager.dict({100 : "777", 200 : "888"}))
p1 = Process(target=f, args=(msg,))
p2 = Process(target=f, args=(msg,))
p3 = Process(target=f, args=(msg,))
p1.start()
p2.start()
p3.start()
p1.join()
p2.join()
p3.join()
for d in msg:
print(str(d))
В результате на выходе
{1: «Ahihihi», 2: «B»}
{20: «AAA», 30: «BBB»}
{100: '777555', 200:' 888 '}