python中Queue模块

创建队列

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

猜你喜欢

转载自blog.csdn.net/sinat_34474705/article/details/79364114