python - 如何让这个在队列中等待的线程退出?

标签 python multithreading queue

我的应用程序中有两个线程。将值放入 Queue 中的一个, 另一个将它们从 Queue 中拉出来并处理它们。

关闭应用程序时我面临两难境地。处理 Queue 中项目的线程卡在了:

item = request_queue.get() # this call blocks until an item is available

唯一会终止线程的是如果另一个项目被添加到 Queue - 因为主线程没有添加任何东西(因为它正在关闭),应用程序锁定。

那么...即使 Queue 上没有任何内容,我如何指示 Queue.get() 以某种方式返回?

最佳答案

事实证明答案很简单。选择一个对于处理 Queue 的代码无效的值(None 是理想的选择)并将其推送到 Queue 中。然后让 Queue 处理线程在获取值时退出:

while True:

    item = request_queue.get()

    if item is None:
        break

    # process the Queue as per normal...

关于python - 如何让这个在队列中等待的线程退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5987281/

相关文章:

java - 如何测试静态方法是否线程安全

c++ - 从队列中检索成员项目?

regex - 如何使用多个工作线程处理logstash中的多行?

python - 对 numpy 数组执行复杂的条件运算

java - 为什么 % 运算符在 Python 和 Java 中的工作方式不同?

python - 将列表的输出格式化为列

c# - 仅使用一小部分 CPU 在多个任务中运行 CPU 密集型方法?

php - Laravel 电子邮件队列有效但不发送

c - 如何在 C 中实现循环列表(环形缓冲区)?

python - Tensorflow - 矩阵中点的欧几里德距离