2017-02-17 4 views
0

親プロセスと子プロセスの間で、その中のいくつかのEvent()変数でdictを共有したいのですが、プロセスが開始された後、私は(キー、値)を追加または削除する必要があることに注意してください。以下のような通常のdictもmultiprocessing.Manager.dictも私の要求を満たすことはできないようです。Pythonは親プロセスと子プロセスの間でEvent()変数を使用してdictを共有しています

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メッセージ:( '#RETURN'、)"を取得します。 – nicklhy

+0

二重にチェックして、 'fun __main __ ':' if __name__ == 'を追加してください。 – Udi

+0

このコードは私のラップトップに同じエラーメッセージでクラッシュしました。 Python2.7を使っています。 – nicklhy

関連する問題