像这样的东西:
import queueimport threadingq = queue.Queue()def _worker(): while True: msg = q.get(block=True) print(msg) q.task_done()t = threading.Thread(target=_worker)#t.daemon = Truet.start()q.put('asdf-1')q.put('asdf-2')q.put('asdf-4')q.put('asdf-4')
我想要完成的基本上是确保在主线程退出之前清空队列.
如果我将t.daemon设置为True,程序将在队列清空之前退出,但是如果它被设置为False,程序将永远不会退出.有没有办法确保运行_worker()方法的线程清除主线程退出的队列?
我假设您的主线程将执行除将项添加到队列之外的其他 *** 作 – 并且可能随时关闭,您只需要确保在关闭完成之前您的队列为空.
在主线程结束时,您可以在循环中添加一个简单的空检查.
while not q.empty(): sleep(1)
如果你没有设置t.daemon = True,那么线程永远不会完成.将线程设置为守护程序线程意味着线程不会导致程序在主线程完成时保持运行.
总结以上是内存溢出为你收集整理的python – 如何在退出主线程之前确保队列为空全部内容,希望文章能够帮你解决python – 如何在退出主线程之前确保队列为空所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)