queue

[TOC]

Python queue模块

包含队列类型

  • class queue.Queue(maxsize=0) FIFO队列

  • class queue.LifoQueue(maxsize=0) LIFO队列

  • class queue.PriorityQueue(maxsize=0) 优先队列

注意

maxsize用来指定队列元素最大个数, 如果设为0, 则表示队列长度没有限制.

包含的异常

  • exception queue.Empty

  • exception queue.Full

定义队列

import queue            # 引入模块
q = queue.Queue()        # 实例化一个队列对象

操作

Queue.qsize()

获取队列长度.

注意: 返回值是0不保证get()操作不会阻塞; 返回值小于定义的最大长度, 不能保证put()操作不会阻塞.

Queue.empty()

如果队列为空, 函数返回True, 否则返回False.

注意: 返回值为True不能保证put()操作不会阻塞; 返回值为False不能保证get()操作不会阻塞.

Queue.full()

队列长度达到最大值返回True, 否则返回False.

注意: 返回值为True不能保证get()操作不会阻塞; 返回值为False不能保证put()操作不会阻塞.

Queue.put(item, block=True, timeout=None)

向队列添加元素.

参数: item

要添加的对象.

参数: block和timeout

如果block=True timeout=None

操作会被阻塞, 直到有可用自由槽(free slot).

如果block=True并且timeout是一个正数

操作会被阻塞, 如果在timeout设定的时间内(单位是秒), 没有获取到可用的自由槽, 则会抛出Queue.Full异常.

如果block=Flase

timeout参数会被屏蔽, 且操作不会被堵塞. 如果获取到自由槽, 操作可以正常执行, 否则会抛出Queue.Full异常.

Queue.put_nowait(item)

等价于put(item, false).

Queue.task_done()

判断任务是否完成.

Queue.join()

在队列中所有元素处理完之前, join方法会阻塞.

等待进队操作完成的例子

原文

最后更新于

这有帮助吗?