я захотел реализовать простую программу на питоне с использованием параллельного выполнения. Это связано с вводом-выводом, поэтому я решил, что потоки будут подходящими (в отличие от процессов). Прочитав документацию по Queue и fork, я подумал, что может работать что-то вроде следующего.
q = Queue.Queue()
if os.fork(): # child
while True:
print q.get()
else: # parent
[q.put(x) for x in range(10)]
Однако вызов get() никогда не возвращается. Я думал, что он вернется, как только другой поток выполнит вызов put().При использовании модуля threading все работает примерно так, как я ожидал:
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 не делает того же. Что я упускаю?