代码之家  ›  专栏  ›  技术社区  ›  Uyghur Lives Matter

你应该加入一个完成的守护进程线程吗?

  •  0
  • Uyghur Lives Matter  · 技术社区  · 6 年前

    我有一些工作线程使用来自预填充输入队列的数据,并将结果放入另一个队列。

    import queue
    import threading
    
    worker_count = 8
    input_queue = queue.Queue()
    output_queue = queue.Queue()
    
    threads = []
    for _ in range(worker_count):
        thread = threading.Thread(target=perform_work, args=(input_queue, output_queue)
        thread.daemon = True
        thread.start()
        threads.append(thread)
    

    我正在主线程中处理结果,我想确保处理所有结果。

    while True:
        try:
            result = output_queue.get(True, 0.1)
        except queue.Empty:
            pass
        else:
            process_result(result)
    
        if not any([t.is_alive() for t in threads]) and not output_queue.empty():
            # All results have been processed, stop.
            break
    

    .is_alive() 在这种情况下?或者有什么特别的理由 .join() 相反呢?

    daemon = True 因为它使调试和终止程序更容易。

    0 回复  |  直到 6 年前