У меня есть класс, который содержит (большое) количество различных свойств, включая несколько словарей. Когда я передаю экземпляр класса новому процессу, кажется, что все числовые значения передаются правильно, но все словари, которые были в объекте класса, очищаются.
Вот простой тест, который я приготовил, который демонстрирует мою проблему:
from multiprocessing import Process
class State:
a = 0
b = {}
def f(s, i):
print "f:", s.a, s.b
def main():
state = State()
state.a = 11
state.b['testing'] = 12
print "Main:", state.a, state.b
ps = []
for i in range(1):
p = Process(target=f, args=(state, i))
p.start() # Do the work
ps.append(p)
for p in ps:
p.join()
if __name__ == '__main__':
main()
Я ожидаю, что результат будет
Main: 11 {'testing': 12}
f: 11 {'testing': 12}
но вместо этого я получаю
Main: 11 {'testing': 12}
f: 11 {}