from multiprocessing import Process, Manager def update_me(dict_obj, key): dict_obj[key] = 'a value' threads = [] manager = Manager() my_dict = manager.dict() for i in range(10): p = Process(target=update_me, args=(my_dict, i)) threads.append(p) for thread in threads: thread.deamon = True thread.start() for thread in threads: thread.join() print('Processes ended') print(type(my_dict)) print(my_dict) for key in my_dict: print(key) ''' $ python3 test.py Processes ended {0: 'a value', 1: 'a value', 2: 'a value', 3: 'a value', 4: 'a value', 5: 'a value', 6: 'a value', 7: 'a value', 8: 'a value', 9: 'a value'} a value a value a value a value a value a value a value a value a value a value Traceback (most recent call last): File "test.py", line 25, in for key in my_dict: File "", line 2, in __getitem__ File "/usr/lib/python3.6/multiprocessing/managers.py", line 772, in _callmethod raise convert_to_error(kind, result) KeyError: 10 '''