multithreading - Python multi threading with queue -
यह मेरा कोड है;
पंक्ति आयात से आयात थ्रेडिंग पंक्ति शब्द = खुला (" Word.txt ") लॉक = थ्रेडिंग। लॉक () धागे = 10 क्यू = क्व्यू (अधिकतम आकार = 0) def myfunction (q): lock.acquire () प्रिंट q.get () lock.release () q.task_done () के लिए रेंज (धागे) में एक्स: धागा = धागा। धागा (लक्ष्य = myfunction, args = (q,)) m.setDaemon (सही) m.start () शब्दों में शब्द के लिए: q.put (word.strip () ) Q.join () raw_input ()
यह आउटपुट होगा:
शब्द 1 शब्द 2 शब्द 3 शब्द 4 शब्द 5 शब्द 6 शब्द 7 शब्द 8 शब्द 7 शब्द 10 शब्द 10
पूर्व>तब यह बंद हो जाएगा फ़ाइल में बहुत अधिक शब्द हैं, मैं इसे कैसे जारी रख सकता हूं? मेरी समझ से, q.join () को तब तक इंतजार करना चाहिए जब तक क्यूई रिक्त नहीं है और अधिक जोड़ने के लिए।
मैंने सोचा था कि इसे इस तरह से एक पाश में डालना:
शब्द के लिए शब्दों में: रेंज (थ्रेड) में एक्स के लिए q.put (word.strip ()): m = थ्रेडिंग। धागा (लक्ष्य = myfunction, args = (q,)) m.setDaemon (True) m.start () < / Code>
लेकिन कभी-कभी मुझे यह कहते हुए एक त्रुटि मिलती है "नया थ्रेड प्रारंभ नहीं किया जा सकता"।
अपने धागे को एक कतार वस्तु के संसाधित करने के बाद बस खत्म हो जाते हैं।
वर्कर कोड (अर्थात myfunction
के शरीर को) को में रखें, जबकि: True लूप ताकि यह क्यूई से अधिक आइटम प्राप्त करने पर रहता है, एक बार
q.task_done ()
को बुलाया गया था।
Comments
Post a Comment