queue模块实现了多生产者,多消费者的队列。当要求信息必须在多线程间安全交换,这个模块在线程编程时非常有用。Queue模块实现了所有要求的锁机制。 Queue模块主要是多线程,保证线程安全使用的,内部实现是在抢占式线程加上临时锁。但是没有涉及如何去处理线程的重入。
这个类实现了三种类型的queue,区别仅仅在于进去和取出的位置。
1) 个FIFO(First In,First Out)队列中,先加先取,默认方式queue.Queue()
2) LIFO(Last InFirst Out)的队列中,就是stack queue.LifoQueue()
3) priority队列,有序保存,优先级最低的先出来 queue.PriorityQueue()
方法:
task_done() 意味着之前入队的一个任务已经完成。由队列的消费者线程调用。每一个get()调用得到一个任务,接下来的task_done()调用告诉队列该任务已经处理完毕。
join() 阻塞调用线程,直到队列中的所有任务被处理掉
put() 添加元素到队列
get() 从队列中获取元素,队列中把该元素删除
empty() 判断队列是否为空
qsize() 返回队列大小
full() 判断队列是否慢