Python multiprocessing: How do I share a dict among multiple processes? -


एक प्रोग्राम जो कई प्रक्रियाओं को बनाता है जो एक सक्षम-योग्य कतार, Q पर काम करता है, और अंततः परिणामों को स्टोर करने के लिए एक वैश्विक शब्दकोश डी में हेरफेर करें (इसलिए प्रत्येक बच्चे की प्रक्रिया इसके परिणाम को स्टोर करने के लिए D का उपयोग कर सकती है और यह भी देखें कि अन्य बाल प्रक्रियाओं का क्या परिणाम निकलता है)

अगर मैं बाल प्रक्रिया में शब्दकोश डी को मुद्रित करता हूं, तो मैं उस संशोधन को देखें जो उस पर किया गया है (यानी डी पर)। लेकिन मुख्य प्रक्रिया क्यू में शामिल होने के बाद, अगर मैं डी प्रिंट करता हूं, तो यह एक खाली शब्द है!

मैं समझता हूं कि यह एक सिंक्रनाइज़ेशन / ताला समस्या है क्या कोई मुझे बता सकता है कि यहां क्या हो रहा है, और मैं कैसे डी की पहुंच सिंक्रनाइज़ कर सकता हूं?

एक सामान्य जवाब एक ऑब्जेक्ट का उपयोग करना शामिल है दस्तावेज़ से अनुकूलित:

  बहुप्रोसेसिंग आयात प्रक्रिया से, प्रबंधक def f (d): d [1] + = '1' d ['2'] + = 2 यदि __name__ == ' __main__ ': manager = प्रबंधक () d = manager.dict () डी [1] =' 1 'डी [' 2 '] = 2 पी 1 = प्रक्रिया (लक्ष्य = एफ, आर्ग्स = (डी,)) पी 2 = प्रक्रिया ( लक्ष्य = च, आर्ग्स = (डी,)) p1.start () p2.start () p1.join () p2.join () प्रिंट डी   

आउटपुट:

  $ python mul.py {1: '111', '2': 6}    

Comments

Popular posts from this blog

java - ImportError: No module named py4j.java_gateway -

python - Receiving "KeyError" after decoding json result from url -

c++ - Qt::make_shared for creating QSharedPtr as std::make_shared for creating std::shared_ptr -