首页 > 解决方案 > 无法从多线程 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打破它。

标签: pythonmultithreadingqueue

解决方案


quit()exit()通常为我工作。


推荐阅读