2017-02-17 8 views
0

부모 프로세스와 자식 프로세스 사이에 Event() 변수와 함께 dict를 공유하려고하지만이를 알지 못합니다. 프로세스가 시작된 후에 키 또는 값을 추가하거나 삭제해야합니다. 그것은 정상 dict도 아래 multiprocessing.Manager.dict 내 요구 사항을 만족시킬 수없는 것 같습니다.Python은 부모 프로세스와 하위 프로세스 사이에 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()) 

부모와 자식 프로세스간에 이러한 세마포를 공유하는 올바른 방법은 무엇입니까?

답변

0

그것은 도움이되지 않습니다

d1[1] = manager.Event() 
+0

d1[1] = Event() 

를 교체합니다. RemoteError 메시지 "Unserializable message : ('#RETURN', )"가 나타납니다. – nicklhy

+0

두 번 확인하고 'fun __main __':'__name__ == '을 추가하십시오. – Udi

+0

이 코드는 랩톱에서 같은 오류 메시지와 함께 충돌합니다. 나는 Python2.7을 사용합니다. – nicklhy