2015-10-30 5 views
7

मुझे यकीन नहीं है कि श्रमिकों के एकाधिक प्रक्रियाओं के पूल का उपयोग कब करें।पायथन कार्यकर्ता प्रक्रियाओं के पूल के बीच क्या अंतर है और केवल कई प्रक्रियाओं को चला रहा है?

processes = [] 

for m in range(1,5): 
     p = Process(target=some_function) 
     p.start() 
     processes.append(p) 

for p in processes: 
     p.join() 

बनाम

if __name__ == '__main__': 
    # start 4 worker processes 
    with Pool(processes=4) as pool: 
     pool_outputs = pool.map(another_function, inputs) 

उत्तर

4

यह कहते हैं on PYMOTW:

पूल वर्ग सरल मामलों में जहां काम किया जाना बाकी के लिए कार्यकर्ताओं की एक निश्चित संख्या का प्रबंधन करने के लिए किया जा सकता कर सकते हैं टूट जाए और स्वतंत्र रूप से श्रमिकों के बीच वितरित किया गया।

नौकरियों से वापसी मूल्य एकत्र किए जाते हैं और एक सूची के रूप में लौटाए जाते हैं।

पूल तर्कों में कार्य प्रक्रिया शुरू करने के दौरान प्रक्रियाओं की संख्या और पर एक फ़ंक्शन शामिल होता है (प्रति बच्चे एक बार बुलाया जाता है)।

कृपया अपने आवेदन, कार्यक्षमताओं और मानकों को बेहतर ढंग से समझने के लिए दिए गए उदाहरणों पर नज़र डालें।

असल में पूल एक सहायक है, उन मामलों में प्रक्रियाओं (श्रमिकों) के प्रबंधन को आसान बनाता है, जहां उन्हें केवल इतना करना है कि वे सामान्य इनपुट डेटा का उपभोग करें, इसे समानांतर में संसाधित करें और संयुक्त आउटपुट तैयार करें।

पूल काफी कुछ चीजें हैं जो अन्यथा आप अपने आप को (नहीं बहुत कठिन है, लेकिन अभी भी यह सुविधाजनक है एक पूर्व पकाया समाधान खोजने के लिए) कोड चाहिए

यानी

  • के बंटवारे करता है इनपुट डेटा
  • लक्ष्य प्रक्रिया फ़ंक्शन को सरल बनाया गया है: इसे केवल एक इनपुट तत्व की अपेक्षा करने के लिए डिज़ाइन किया जा सकता है। पूल करने के लिए प्रत्येक कार्यकर्ता के उत्पादन में विलय यह सबसेट कि कार्यकर्ता
  • कार्यकर्ताओं अपना काम खत्म करने के लिए के लिए इंतज़ार कर
  • (यानी प्रक्रियाओं में शामिल होने) के लिए आवंटित से प्रत्येक तत्व उपलब्ध कराने के कॉल करने के लिए जा रहा है ...
  • अंतिम आउटपुट
+0

tl; डॉ संस्करण: डेटा समांतरता के आसान कार्यान्वयन के लिए पूल का उपयोग करें। आम तौर पर कार्य समांतरता के लिए लागू नहीं है। – RobertB

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