Я хотел реализовать простую программу на Python, используя параллельное выполнение.Это связано с вводом / выводом, поэтому я решил, что потоки будут уместны (в отличие от процессов).Прочитав документацию по 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 ().При использовании модуля потоков все работает более ожидаемым образом:
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)]
Я просто не понимаю, почему подход с использованием форка не делает то же самое.Чего мне не хватает?