मेरे पास छवि पथों की एक सूची है जो मैं प्रक्रियाओं या धागे के बीच विभाजित करना चाहता हूं ताकि प्रत्येक प्रक्रिया सूची के कुछ भाग को संसाधित करे। प्रसंस्करण में डिस्क से लोडिंग छवि शामिल है, कुछ गणना करें और परिणाम वापस करें। मैं अजगर 2.7 का उपयोग कर रहा multiprocessing.Pool
पायथन मल्टीप्रोसेसिंग पूल बनाम मल्टीप्रोसेसिंग थ्रेडपूल
यहाँ मैं कैसे बना सकता हूँ कार्यकर्ता प्रक्रियाओं
def ProcessParallel(classifier,path):
files=glob.glob(path+"\*.png")
files_sorted=sorted(files,key=lambda file_name:int(file_name.split('--')[1]))
p = multiprocessing.Pool(processes=4,initializer=Initializer,initargs=(classifier,))
data=p.map(LoadAndClassify, files_sorted)
return data
मुद्दा मैं इसे का सामना करना पड़ रहा है कि जब मैं अपने Intializer समारोह में प्रारंभ समय प्रवेश करते है, मुझे पता है कि श्रमिक नहीं हैं 'आया है समानांतर में प्रारंभ टी, बल्कि प्रत्येक कार्यकर्ता 5 सेकंड के अंतराल के साथ आरंभ नहीं हो जाता, यहाँ संदर्भ
2016-08-08 12:38:32,043 - custom_logging - INFO - Worker started
2016-08-08 12:38:37,647 - custom_logging - INFO - Worker started
2016-08-08 12:38:43,187 - custom_logging - INFO - Worker started
2016-08-08 12:38:48,634 - custom_logging - INFO - Worker started
मैं कोशिश की multiprocessing.pool.ThreadPool
बजाय का उपयोग कर दिया है जो एक ही समय में श्रमिक शुरू होता है के लिए लॉग नहीं है।
मुझे पता है कि विंडोज़ पर मल्टीप्रोसेसिंग कैसे काम करती है और हमें अपने कोड को अनंत प्रक्रियाओं से बचाने के लिए main guard
रखना होगा। मेरे मामले में मुद्दा यह है कि मैंने फास्टसीजीआई का उपयोग करके आईआईएस पर अपनी स्क्रिप्ट होस्ट की है और मेरी स्क्रिप्ट मुख्य नहीं है, इसे फास्टसीजीआई प्रक्रिया द्वारा चलाया जा रहा है (इसके लिए एक wfastcgi.py स्क्रिप्ट है जो इसके लिए ज़िम्मेदार है)। अब wfastcgi.py के अंदर एक मुख्य गार्ड है और लॉग इंगित करते हैं कि मैं प्रक्रियाओं की अनंत संख्या नहीं बना रहा हूं।
अब मुझे पता है कि वास्तव में क्या पीछे बहु पूल कार्यकर्ता धागे एक साथ बनाने नहीं कारण है, मैं वास्तव में किसी भी मदद की सराहना करेंगे चाहते हैं।
संपादित करें 1: यहाँ मेरी प्रारंभकर्ता समारोह है
def Initializer(classifier):
global indexing_classifier
logger.info('Worker started')
indexing_classifier=classifier
'प्रारंभकर्ता' क्या करता है? –
जब कोई कार्यकर्ता प्रारंभ होता है और प्रत्येक कार्यकर्ता को 'वर्गीकरण' नामक एक चर को पास करने के लिए बस – Ahmed
@MuhammadTahir कृपया संपादित प्रश्न – Ahmed