队列queue

队列Queue

3种Queue类型

  1. FIFO:class Queue.Queue(maxsize=0)

    FIFO 即 First in First Out,Queue 提供了一个基本的 FIFO 容器,使用方法很简单,maxsize 是个整数,指明了队列中能存放的数据个数的上限。一旦达到上限,插入会导致阻塞,直到队列中的数据被消费掉。如果maxsize小于或者等于0,队列大小没有限制。

  2. LIFO:class Queue.LifoQueue(maxsize=0)

    即 Last in First Out,后进先出。与栈的类似,maxsize 用法同上。

  3. 优先级队列class Queue.LifoQueue(maxsize=0)

    构造一个优先队列。maxsize 用法同上。

常用方法

q = queue.Queue(maxsize=10)

  • q.qsize() 返回队列的大小
  • q.empty() 如果队列为空,返回True,反之False
  • q.full() 如果队列满了,返回True,反之False
  • q.get([block[, timeout]]) 获取队列,timeout等待时间
  • q.get_nowait() 相当Queue.get(False)
  • q.put(item) 写入队列,timeout等待时间
  • q.put_nowait(item) 相当Queue.put(item, False)
  • q.task_done() 在完成一项工作之后,Queue.task_done()函数向任务已经完成的队列发送一个信号
  • q.join() 实际上意味着等到队列为空,再执行别的操作

get和put

q.get() 是从队列里拿数据,q.put() 是往队列添加数据

import queue

# 设置上限maxsize=10
q = queue.Queue(maxsize=10)

# 往队列加10个数据
for i in range(100):
    if q.qsize() >= 10:
        # 存放的数据达到上限maxsize,插入会导致阻塞
        break
    else:
        q.put(i)

# 从队列取值
while not q.empty():
    n = q.get()
    print(n)

"""
输出如下:
0
1
2
3
4
5
6
7
8
9
"""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值