Я хочу поделиться с некоторыми переменными Event() внутри него между родительским и дочерним процессами, но не знаю, как это сделать. Обратите внимание, что мне нужно добавить или удалить (ключ, значение) после запуска процесса. Кажется, что ни нормальный dict, ни multiprocessing.Manager.dict, как показано ниже, не могут удовлетворить мои требования.Python, совместно использующий dict с переменными Event() внутри него между родительскими и дочерними процессами
import time
from multiprocessing import Process, Event, Manager
manager = Manager()
d1 = manager.dict()
# d1 = dict()
def fun():
# do something and then set d1[1]
time.sleep(4)
d1[1].set()
p = Process(target=fun, name='fun')
p.start()
d1[1] = Event() # add a (key, value) after the process is defined
p.join()
print 'After fun, d1[1] = %s' % (d1[1].is_set())
Итак, каков правильный способ обмена этими семафорами между родительскими и дочерними процессами?
Это не помогает. Я получаю сообщение RemoteError «Unserializable message: (« #RETURN »,)». –
nicklhy
Пожалуйста, дважды проверьте и добавьте 'if __name__ == '__main __':' после того, как вы определите 'fun' – Udi
Этот код разбился с тем же сообщением об ошибке на моем ноутбуке. Кстати, я использую Python2.7. – nicklhy