python - 无法从多线程 for 循环中退出
问题描述
如果发生错误,我无法破坏以下功能。
def run(self, max_workers=10):
outputs = {}
q = queue.Queue()
for key, ground_truth in self.ground_truths.items():
q.put((key, ground_truth))
count = {}
count['total_finish'] = 0
start_time = time.time()
def worker():
while True:
try:
key, value = self.pred_on_one_image(q.get())
outputs[key] = value
count['total_finish'] += 1
except:
os._exit()
finally:
q.task_done()
for i in range(max_workers):
t = Thread(target=worker)
t.daemon = True
t.start()
q.join()
return outputs
我尝试使用return
, q.put(None)
, sys.exit()
,但它们都不起作用,我必须手动Ctrl+C
打破它。
解决方案
quit()
exit()
通常为我工作。