मैं समानांतर निष्पादन का उपयोग करके एक साधारण पायथन प्रोग्राम को कार्यान्वित करना चाहता था। यह I/O बाध्य है, इसलिए मैंने पाया कि धागे उपयुक्त होंगे (प्रक्रियाओं के विपरीत)। कतार और कांटा के लिए प्रलेखन पढ़ने के बाद, मैंने सोचा कि निम्नलिखित की तरह कुछ काम कर सकता है।os.fork और Queue को समझना। Queue
q = Queue.Queue()
if os.fork(): # child
while True:
print q.get()
else: # parent
[q.put(x) for x in range(10)]
हालांकि, प्राप्त() कॉल कभी वापस नहीं आती है। मैंने सोचा कि यह एक बार थ्रेड() कॉल निष्पादित करने के बाद वापस आ जाएगा। सूत्रण मॉड्यूल का उपयोग करना, बातों से व्यवहार करते हैं और अधिक की तरह मैं उम्मीद:
q = Queue.Queue()
def consume(q):
while True:
print q.get()
worker = threading.Thread (target=consume, args=(q,))
worker.start()
[q.put(x) for x in range(10)]
मैं सिर्फ क्यों कांटा दृष्टिकोण एक ही बात नहीं करता है समझ में नहीं आता। मैं क्या खो रहा हूँ?
+1 'मल्टीप्रोसेसिंग' का उल्लेख करने के लिए +1। –