2012-01-16 10 views
5

मेरे पास एक पायथन प्रोग्राम है जो निष्पादित करने में लगभग 10 मिनट लगते हैं। तो मैं चीजों को तेजी लाने के लिए multiprocessing से Pool का उपयोग करें:लगातार प्रक्रिया पोस्ट पाइथन पूल

from multiprocessing import Pool 
p = Pool(processes = 6) # I have an 8 thread processor 
results = p.map(function, argument_list) # distributes work over 6 processes! 

यह बहुत जल्दी चलता है, सिर्फ इतना है कि से। भगवान पाइथन आशीर्वाद! और इसलिए मैंने सोचा कि यह होगा।

हालांकि मैंने देखा है कि हर बार जब मैं ऐसा करता हूं, प्रक्रियाओं और उनके काफी आकार का राज्य रहता है, भले ही p गुंजाइश से बाहर हो गया हो; प्रभावी रूप से, मैंने एक स्मृति रिसाव बनाया है। प्रक्रियाएं सिस्टम सिस्टम अनुप्रयोग में पाइथन प्रक्रियाओं के रूप में दिखाई देती हैं, जो इस बिंदु पर कोई सीपीयू नहीं उपयोग करती हैं, लेकिन उनके राज्य को बनाए रखने के लिए काफी स्मृति है।

पूल में close, terminate, और join कार्य करता है, और मुझे लगता है कि इनमें से एक प्रक्रियाओं को मार देगा। क्या किसी को पता है कि मेरे पूल p को बताने का सबसे अच्छा तरीका कौन सा है?

आपकी मदद के लिए बहुत बहुत धन्यवाद!

p.close() 
p.join() 

map() के बाद संकेत मिलता है कि श्रमिकों को समाप्त करना चाहिए और फिर उन्हें ऐसा करने के लिए के लिए प्रतीक्षा:

उत्तर

5

Python docs से, ऐसा लगता है कि आप क्या करने की जरूरत लग रहा है।

संबंधित मुद्दे