赞
踩
Queue模块支持先进先出(FIFO)队列,支持多线程的访问,包括一个主要的类型(Queue)和两个异常类(exception classes)。
Python 2 中的Queue模块在Python 3中更名为 queue。
Queue对象的创建
可以通过实例化Queue类型获得队列对象:
1
|
q
=
Queue.Queue(maxsize
=
0
)
|
创建新的队列,参数 maxsize 的含义是:
Queue模块定义的异常类
1
|
Queue.Empty
|
如果队列 q 是空的,此时又调用了 q.get(False),就会抛出该异常。
1
|
Queue.Full
|
如果队列q是满的,而又调用了 q.put(x, False),就会抛出该异常。
Queue对象的方法
q.empty()
判断队列是否为空。
q.full()
判断队列是否已满。
q.get(block=True, timeout=None)
q.get_nowait()
参数 block 为 False 时,参数 timeout 没有意义,因为线程不会阻塞:
block 为 True 时,结合超时 timeout 判断当队列空时,是一直阻塞进程,还是进程阻塞一段时间。
get_nowait()等于get(False),或者get(timeout=0)即不论队列空否,都不阻塞等待。
例如:
1
2
3
4
|
try
:
x
=
q.get_nowait()
except
Queue.Empty:
print
"no more items to process"
|
q.put(item, block=True, timeout=None)
q.put_nowait(item)
向队列中插入 item,如果队列满了,抛出Queue.Full或线程阻塞等待。
q.qsize()
返回当前队列中的元素个数。
q.join()
q.task_done()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。