Я запускаю python 2.7.3, и я заметил следующее странное поведение. Рассмотрим этот минимальный пример:
from multiprocessing import Process, Queue
def foo(qin, qout):
while True:
bar = qin.get()
if bar is None:
break
qout.put({'bar': bar})
if __name__ == '__main__':
import sys
qin = Queue()
qout = Queue()
worker = Process(target=foo,args=(qin,qout))
worker.start()
for i in range(100000):
print i
sys.stdout.flush()
qin.put(i**2)
qin.put(None)
worker.join()
Когда я зацикливаю более 10 000 или более, мой script зависает на worker.join()
. Он отлично работает, когда цикл достигает 1000.
Любые идеи?