我有以下线程,队列 q 大部分时间都是空的:
def run(self):
while True:
if not self.exit_flag:
items = self.q.get()
q.work_it()
else:
return 0
如果设置了退出标志,它不可能立即退出,因为它可能当前阻塞在
items = self.q.get()
如果我设置超时
items = self.q.get(True, 0.1)
我经常会引发 Empty 异常,因为队列通常是空的,使用的资源比我想要的多。
如果我忙着等待
def run(self):
while True:
if not self.exit_flag:
if not self.q.empty():
items = self.q.get()
q.work_it()
time.sleep(0.1)
else:
return 0
然后我忙着等待,而不是使用 Queue.get() 的阻塞功能,这看起来很丑陋。好像我在这里错过了这个问题的优雅解决方案?有没有或者我应该只使用忙等待解决方案?