가 나는 dict
에 dict
를 업데이트하고 싶었 외부 사람은 multiprocessing.Manager()
를 통해 인스턴스화 :Manager() 인 이유 dict()가 한 수준 만 업데이트 되었습니까?
import multiprocessing
def worker(key, container):
# this one is not applied
container['a'][key] = key
# this one is
container[key] = 3
if __name__ == "__main__":
multiprocessing.freeze_support()
c = multiprocessing.Manager().dict()
c['a'] = {}
p1 = multiprocessing.Process(target=worker, args=('x',c,))
p2 = multiprocessing.Process(target=worker, args=('y',c,))
p1.start()
p2.start()
p1.join()
p2.join()
print(c.copy())
이 코드의 출력은 내가
{'y': 3, 'a': {'x': 'x', 'y': 'y'}, 'x': 3}
을받을 것으로 예상
{'y': 3, 'a': {}, 'x': 3}
입니다
dict
의 첫 번째 레벨은에서 처리 할 수 있습니다.이지만 중첩 된 dict
의 작업은 무시됩니다. 왜?
나는 처음에이 얕은 복사가 원인 일의 나이라고 생각하지만, copy.deepcopy()