मुझे पाइथन मल्टीप्रोसेसिंग लाइब्रेरी का उपयोग करते समय एक अजीब समस्या का सामना करना पड़ा।पायथन मल्टीप्रोसेसिंग - प्रक्रिया पूरी होने पर स्मृति को कैसे रिलीज़ किया जाए?
मेरा कोड नीचे स्केच किया गया है: मैं प्रत्येक "प्रतीक, दिनांक" tuple के लिए एक प्रक्रिया उत्पन्न करता हूं। मैं परिणामों को बाद में जोड़ता हूं।
मुझे उम्मीद है कि जब एक प्रक्रिया ने "प्रतीक, तिथि" tuple के लिए कंप्यूटिंग की है, तो इसे अपनी याददाश्त जारी करनी चाहिए? जाहिर है कि यह मामला नहीं है। मैं दर्जनों प्रक्रियाओं को देखता हूं (हालांकि मैंने प्रक्रिया पूल को आकार 7 रखने के लिए सेट किया है) जो मशीन में निलंबित हैं। वे कोई सीपीयू उपभोग नहीं करते हैं, और वे स्मृति जारी नहीं करते हैं।
इसकी गणना करने के बाद, मैंने प्रक्रिया को अपनी याददाश्त कैसे जारी कर दी है?
धन्यवाद!
¹ द्वारा "निलंबित" मेरा मतलब है ps आदेश में अपनी स्थिति के रूप में दिखाया गया है "एस +"
def do_one_symbol(symbol, all_date_strings):
pool = Pool(processes=7)
results = [];
for date in all_date_strings:
res = pool.apply_async(work, [symbol, date])
results.append(res);
gg = mm = ss = 0;
for res in results:
g, m, s = res.get()
gg += g;
mm += m;
ss += s;
यह मेरी स्क्रिप्ट का मूल कारण> 4 जीबी स्मृति के 90% का सेवन कर रहे थे की वजह से नोड रिबूट की वजह से था :) धन्यवाद! –