2017-02-17 71 views
0

我想在父進程和子進程之間共享一個帶有一些Event()變量的字典,但不知道如何。請注意,我需要在進程啓動後添加或刪除(鍵值)。似乎下面的正常詞典和多處理.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] = Event() 

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

它也沒有幫助。我得到一個RemoteError消息「Unserializable message:('#RETURN',)」。 – nicklhy

+0

請仔細檢查,並添加'if __name__ =='__main __':'定義'fun'後 – Udi

+0

此代碼在我的筆記本電腦中出現同樣的錯誤消息。順便說一句,我使用Python2.7。 – nicklhy