मुझे लगता है कि मैं पाइथन दस्तावेज का सही ढंग से अनुसरण कर रहा हूं लेकिन मुझे परिणाम मिलने में परेशानी हो रही है। मैं मूल रूप से संख्याओं की एक सूची है, जो लूप के लिए नेस्टेड के एक समारोह में पारित किया जा रहा है और आउटपुट को एक शब्दकोश में सहेजा जाता है।मैं मल्टीप्रोसेसिंग के साथ साझा शब्दकोश का उपयोग कैसे कर सकता हूं?
{1: 9801, 2: 9801, 3: 9801, 10: 9801}
मैं गलत क्या कर रहा की कोई सुझाव:
from multiprocessing import Pool, Manager
list = [1,2,3,10]
dictionary = {}
def test(x, dictionary):
for xx in range(100):
for xxx in range(100):
dictionary[x]=xx*xxx
if __name__ == '__main__':
pool = Pool(processes=4)
mgr = Manager()
d = mgr.dict()
for N in list:
pool.apply_async(test, (N, d))
# Mark pool as closed -- no more tasks can be added.
pool.close()
# Wait for tasks to exit
pool.join()
# Output results
print d
यहाँ अपेक्षित परिणाम है:
यहाँ कोड है? साथ ही, मैंने खुद को आश्वस्त नहीं किया है कि साझा संसाधन सर्वोत्तम दृष्टिकोण हैं (राज्य को बनाए रखने के लिए डेटाबेस का उपयोग करने की सोच) ताकि अगर मेरा दृष्टिकोण पूरी तरह से त्रुटिपूर्ण हो या पाइथन में ऐसा करने का बेहतर तरीका है तो कृपया मुझे बताएं।
धन्यवाद, मुझे विश्वास नहीं है कि मैंने इतनी सरल गलती की है। धन्यवाद। सामान्य दृष्टिकोण के लिए। मेरा वास्तविक कोड मूल रूप से मौजूदा dict आइटमों को संदर्भित करने की आवश्यकता है और यदि यह इसे बनाने के लिए अस्तित्व में नहीं है (और यदि यह नए लूप के भीतर संसाधित करने के लिए मौजूद है)। बैचिंग यह मेरे लिए विशेष रूप से काम नहीं करेगा लेकिन उस दृष्टिकोण के बारे में जानना अच्छा होगा। मैं डेटाबेस के बारे में सोच रहा था (या एक फाइल में परिणाम भंडार) लेकिन यकीन नहीं था। – Lostsoul