我想用pool对象的close()
方法优雅地停止pool worker,但是terminate()
那些不能在10秒钟内完成执行的工作线程。在
started_at = int(time.time())
p.close() # this is blocking
if (int(time.time()) - started_at >= 10):
p.terminate()
像这样。有什么想法吗?:)
我还考虑过向线程发送SIGTERM
,但是它们共享相同的pid,所以我不能这样做。在
Tags:
好像我第一次没有得到这个问题。在
您也许可以将}调用是否没有及时完成,只需调用
p.close()
调用发送到另一个进程,例如使用apply_async
,看看{p.terminate()
。在有关
apply_async
的更多信息,请参考docs。在如果使用的是线程池,可以使用全局变量(例如
stopthreads
)。在在工作线程中运行的函数应经常检查此变量,并在将其设置为
True
时退出:相关问题 更多 >
编程相关推荐