python queue模块

queue模块实现了四种队列, 即Queue,LifoQueue, PriorityQueue, SimpleQueue.

queue模块对象

class.queue.Queue(maxsize=0): FIFO队列, 先进先出

class.queue.LifoQueue(maxsize=0):LIFO队列,先进后出,即栈

class.queue.PriorityQueue(maxsize=0):优先队列
设优先队列的元素为item,则优先队列输出值时,item是按【 sorted(list(entries))[0] 】先进行排序,再将最小值优先输出

三个对象的参数maxsize表示该对象的容量,默认为0,即无上限,同时如果为负数也表无上限,当三个对象已满时,再向其传入值时,会引起_queue.Full错误。

常用方法

:以下是Queue,LifoQueue, PriorityQueue这三个的常用方法,SimpleQueue的方法与其有些相似,可以参考官方文档

  • qsize():返回当前队列的大小

  • empty():判断目前队列是否为空队列,返回布尔值

  • full():判断当前队列是否已满

  • put(item, block=True, timeout=None):向当前队列插入元素item,
    - 如果队列已满,且block为True时,则在timeout秒数内阻塞,等待插入;当block为False或等待超过timeout时,抛出queue.Full异常。
    - 如果队列已满,block为True,且timeout为None时,程序会一直阻塞直至成功插入元素。

  • put_nowait():相当于put(item, False)

  • get(block=True, timeout=None):从队列中取出一个元素
    - 如果队列为空,且block为True时,则在timeout秒数内阻塞,等待获取;当block为False或等待超过timeout时,抛出queue.Empty异常。
    - 如果队列为空,block为True,且timeout为None时,程序会一直阻塞直至成功获取下一个元素。

  • get_nowait():相当于get(False)

  • task_done():
    - 表示前面排队的任务已经被完成。每个 get() 被用于获取一个任务, 后续调用 task_done() 告诉队列,该任务的处理已经完成。(简单地说就是告诉队列的消费者线程,前面的任务已完成,可以进行下个任务)
    - 如果 join() 当前正在阻塞,在所有条目都被处理后,将解除阻塞(意味着每个 put() 进队列的条目的 task_done() 都被收到)。

  • join():阻塞队列, 直到队列中所有的任务都被接收和处理完毕。与task_done()一起配合使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值