Python线程池 - 进程永远不会结束
问题描述:
下面是测试代码 - 我正在玩标准库中找到的线程池。问题是最后的过程永远不会结束。它只是挂起。Python线程池 - 进程永远不会结束
我应该提到我在这里之后,func取决于输入可能需要几秒钟到几分钟,我希望他们尽快完成 - 无论先完成任何顺序。理想情况下,我将执行的“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。我已经尝试将该过程设置为守护进程,但没有运气。任何建议/更好的文档?
答
从文档池内
工作进程通常住池的工作队列的整个持续时间。
你或许应该使用任务这样
t.imap(func,xrange(10))
t.close()
t.join()