Python中队列分为两类:
1.线程Queue,也就是普通的Queue,导入方式:from queue import Queue
2.进程Queue,在多线程中应用,导入方式:from multiprocessing import Queue
普通Queue的种类又分为:
FIFO(first in First Out),即先进先出队列。
queue.Queue(maxsize=0)
Queue提供了一个基本的FIFO容器,使用方法很简单,maxsize是个整数,指明了队列中能存放的数据个数的上限。一旦达到上限,插入会导致阻塞,直到队列中的数据被消费掉。如果maxsize小于或者等于0,队列大小没有限制。
LIFO(Last in First Out), 即后进先出。
queue.LifoQueue(maxsize=0)
与栈类似,maxsize用法同上。
priority
class Queue.PriorityQueue(maxsize=0)
构造一个优先队列。maxsize用法同上。
常用方法:
Queue.qsize() 返回队列的大小
Queue.empty() 如果队列为空,返回True,反之False
Queue.full() 如果队列满了,返回True,反之False,Queue.full 与 maxsize 大小对应
Queue.get([block[, timeout]])获取队列,timeout等待时间
Queue.get_nowait() 相当于Queue.get(False),非阻塞方法
Queue.put(item) 写入队列,timeout等待时间
Queue.clear()清空队列
Queue.task_done() 在完成一项工作之后,Queue.task_done()函数向任务已经完成的队列发送一个信号。每个get()调用得到一个任务,接下来task_done()调用告诉队列该任务已经处理完毕。
Queue.join() 实际上意味着等到队列为空,再执行别的操作