python队列
python有两个队列实现,分别是queue.Queue和mulitiprocess.Queue。
queue.Queue是线程安全的,用于线程间数据同步,而mulitiprocess.Queue是用于多进程间数据通讯的。如果在多进程间使用queue.Queue是无法共享数据的,每个进程会有一个单独的队列副本。
因为queue.Queue用于多线程数据同步,而mulitiprocess.Queue用于多进程数据同步。
python3中线程队列的名字为queue,而python2中其名字为Queue。
python中的list和dict不是线程安全的。
task_done与join
queue.Queue有一个join方法可以阻塞当前线程,直到队列中所有的item都处理完成了,所以需要每处理一个队列的item,调用一次队列的task_done方法,当队里的所有元素都标记为处理过了,join方法会从等待中返回。
如果不调用join方法,也就无需调用task_done方法了。
mulitiprocess.Queue并没有join特性,如需要此特性,应该使用multiprocessing.JoinableQueue队列
===
[erq]