我有一堆 Worker 使用以下代码:
while True:
inp = q.get()
<do stuff>
q.task_done()
然后队列在主线程中加入,工作人员仍在等待 .
在这种情况下,如何让 Worker 优雅地关闭?我知道的唯一方法是将一堆Nones推入队列并检查它们,但是这个解决方案看起来非常hackish . 我必须在程序终止之前执行此操作,因此守护程序线程不是一个选项 . 此外,仅检查空队列是不够的,因为工作人员可以动态地添加任务 .
1 回答
正如您所猜测的那样,您的工作人员是否已经退出,将
None
或其他标记发布到输入队列中 . 这是一个有一个 Worker 的小例子:简单工作线程退出无
输出