我想用並行執行來實現一個簡單的python程序。它是I/O綁定的,所以我認爲線程是合適的(與流程相反)。在閱讀Queue和fork的文檔後,我認爲類似下面的內容可能會起作用。瞭解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)]
但是,get()調用永遠不會返回。我認爲一旦其他線程執行put()調用就會返回。使用線程模塊,事情表現得更像我所料:
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)]
我只是不明白爲什麼fork方法不會做同樣的事情。我錯過了什麼?
提及'multiprocessing'的+1。 – 2012-03-29 21:04:16