我的应用程序中有两个线程。将值放入 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/