JoinableQueue理解

JoinableQueue

通俗理解:就是可以join的队列,这个队列的特点就是比Queue额外增加了一个Join函数。

Join函数的作用

  该函数为阻塞函数,会阻塞直到队列中所有的数据都被处理完毕,它才继续往下运行。

# 会导致进程无法结束
q = JoinableQueue()
q.put(1) 
q.get()
q.join() 

上述代码进程无法结束,是因为get仅仅是取出数据,而join是等待数据处理完毕,所以取出数据处理结束还得告知队列处理完毕,这里就用到了task_done

q = JoinableQueue()
q.put(1) 
q.get()
q.task_done() 
q.join()

这里task_done用的是计数方法,每告知一次减一次,所以task_done的调用次数必等于队列中的数据个数,join才能正常结束。

q = JoinableQueue()
q.put(1) 
q.put(1)
q.get()
q.task_done()
q.get()
q.task_done() 
q.join()
原文地址:https://www.cnblogs.com/Lance-WJ/p/13558486.html