मैं पायथन में समवर्ती धागे की संख्या को कैसे सीमित कर सकता हूं?पायथन में समवर्ती धागे की संख्या को सीमित करने के लिए कैसे?
उदाहरण के लिए, मेरे पास कई फाइलों के साथ एक निर्देशिका है, और मैं उन सभी को संसाधित करना चाहता हूं, लेकिन केवल एक ही समय में समानांतर में।
def process_file(fname):
# open file and do something
def process_file_thread(queue, fname):
queue.put(process_file(fname))
def process_all_files(d):
files=glob.glob(d + '/*')
q=Queue.Queue()
for fname in files:
t=threading.Thread(target=process_file_thread, args=(q, fname))
t.start()
q.join()
def main():
process_all_files('.')
# Do something after all files have been processed
मैं कोड कैसे सुधार सकते हैं ताकि केवल 4 धागे एक समय में चलाए जा रहे हैं:
यहाँ मैं अब तक किया है?
ध्यान दें कि मैं सभी फ़ाइलों को संसाधित करने के लिए प्रतीक्षा करना चाहता हूं और फिर संसाधित फ़ाइलों पर जारी रहना चाहता हूं।
आप की कोशिश की [मल्टीप्रोसेस] (है http://docs.python.org/2/library/multiprocessing.html # मॉड्यूल-मल्टीप्रोसेसिंग) पूल? पायथन 3 पर आप [वायदा] (http://docs.python.org/dev/library/concurrent.futures.html) का भी उपयोग कर सकते हैं। – javex
आप पाइथन 2 में भी ['वायदा'] (https://pypi.python.org/pypi/futures) का उपयोग कर सकते हैं, आपको बस बैकपोर्ट इंस्टॉल करने की आवश्यकता है। – abarnert
concurrent.futures वास्तव में यह करने का सबसे अच्छा तरीका है – JBernardo