创建队列
python中Queue模块提供了3中队列:
1. Queue.Queue(maxsize):先进先出队列(最常用)
2. Queue.Lifoqueue(maxsize):先进后出队列
3. Queue.Priorityqueue(maxsize):优先级队列(优先级越低越先出)
这里只介绍最常用的现进先出队列
import Queue
q = Queue.Queue(5) # maxsize = 5
以上代码创建了一个先进先出队列,队列的最大长度为5,即最大可以容纳5个元素。特别的,当maxsize<1时,表示队列无限长。
Queue常用方法
- q.qsize():返回队列长度
- q.empty():判断队列是否为空,返回True或False
- q.full():判断队列是否已满,返回True或False
- q.put(item, block=True):向队尾添加一个元素,如果队列当前已满且block为True,put()方法就使调用线程暂停,直到空出一个数据单元。如果block为False,put方法将引发Full异常。
- q.get(block = True):取出队首的元素,如果队列为空且block为True,get()就使调用线程暂停,直至有项目可用。如果队列为空且block为False,队列将引发Empty异常。
- q.put_nowait(item): 相当q.put(item, False)
- q.get_nowait() :相当q.get(False)
示例
#coding: utf-8
import Queue
#创建一个Queue对象(先进先出队列)
q = Queue.Queue(5) # maxsize = 5
print "max size = ", q.maxsize
print "queue size = ", q.qsize() # current size = 0
print "empty state: ", q.empty() # 判读队列是否为空
# 向队列中添加元素
for i in range(q.maxsize):
q.put(2*i) # 依次添加元素0,2,4,6,8到队尾
print "full state: ", q.full() # 判断队列是否为满
# 取出队首元素
for i in range(q.qsize()):
print "queue size = ", q.qsize()
print "current element = ", q.get() # 以次取出0,2,4,6,8
输出结果
max size = 5
queue size = 0
empty state: True
full state: True
queue size = 5
current element = 0
queue size = 4
current element = 2
queue size = 3
current element = 4
queue size = 2
current element = 6
queue size = 1
current element = 8