我在那有一个事件处理循环库写一个类管理事件循环程序,但这意味着它可能会在处理中被杀。我真的想等待当前的处理迭代完成后才能杀死。在一个线程
通常在这些情况下,在while循环中会检查一个标志,并且有一种方法 - stop()
,比如说 - 设置它为False
。如果可能的话,我宁愿避免这种要求。
下面认为不好吗?
def _process_loop(self):
while True:
event = self.queue.get()
self.thread.daemon = False
self._handle_event(event)
self.thread.daemon = True
编辑:是的,它是不好:RuntimeError: cannot set daemon status of active thread
什么是正确的方式来实现这一目标?
退出while循环的标志有什么不好?这就是我会用的。 – dwxw
如果还有其他方法,我宁愿避免这种情况。它使客户端的责任停止后台进程。 – quornian