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()