在Python中,使用多处理模块时,有两种队列:
它们之间有什么区别?
队列
from multiprocessing import Queue
q = Queue()
q.put(item) # Put an item on the queue
item = q.get() # Get an item from the queue
JoinableQueuefrom 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()
,否则用于计数未完成任务数的信号量最终可能会溢出,从而引发异常。