在Python中,使用多处理模块时,有两种队列:

  • 队列
  • JoinableQueue。

  • 它们之间有什么区别?
    队列
    from multiprocessing import Queue
    q = Queue()
    q.put(item) # Put an item on the queue
    item = q.get() # Get an item from the queue
    
    JoinableQueue
    from multiprocessing import JoinableQueue
    q = JoinableQueue()
    q.task_done() # Signal task completion
    q.join() # Wait for completion
    

    最佳答案

    JoinableQueue 具有join()task_done()方法,而 Queue 没有。





    如果使用JoinableQueue,则必须为从队列中删除的每个任务调用JoinableQueue.task_done(),否则用于计数未完成任务数的信号量最终可能会溢出,从而引发异常。

    07-25 23:34