Ниже приведен тестовый код - я играюсь с Пулом потоков, найденным в стандартной библиотеке. Проблема в том, что окончательный процесс никогда не заканчивается. Просто висит.
Я должен упомянуть, что мне нужно, функция в зависимости от ввода может занять от нескольких секунд до нескольких минут, и я хочу, чтобы они закончили как можно скорее - в порядке того, что заканчивается первым. В идеале число «func», которое я буду выполнять, должно быть около четырех из пяти одновременно.
>>> from multiprocessing.pool import ThreadPool
>>>
>>> def func(i):
... import time
... if i % 2 == 0: time.sleep(5)
... print i
...
>>> t = ThreadPool(5)
>>>
>>> for i in range(10):
... z = t.Process(target=func, args=(i,))
... z.start()
...
1
3
5
7
9
>>> 0
2
4
6
8
Другими словами, после печати «8» код просто ждет здесь, пока я не вызову KeyboardInterrupt. Я пытался установить процесс как демон, но не повезло. Любой совет / лучшая документация?