Python队列的三种队列实现方法

597 篇文章 17 订阅
100 篇文章 2 订阅

今天讲一下队列,用到一个python自带的库,queue

队列的三种实现方法有:

1、FIFO先入先出队列(Queue)

2、LIFO后入先出队列(LifoQueue)

3、优先级队列(PriorityQueue)

先讲一下Queue中的几个方法

# 三种 FIFO  LIFO Priority
# 创建先入先出的队列
# q = queue.Queue()

# q.qsize()  # 返回当前队列包含的消息数量
# q.empty()  # 如果队列为空返回True 反之False
# q.full()  # 如果队列满了,返回True 反之False
# q.get()  # 获取队列,timeout等待时间  get(self, block=True,timeout=None) block表示是否等待 timeout表示等待多久
# q.put(item)  # 写入队列 put(self, item, block=True,timeout=None) block表示是否等待 timeout表示等待多久
# q.get_nowait()  # 相当于q.get(False) 获取不等待
# q.put_nowait()  # 相当于 q.put(item,False) 写入不等待
# q.task_done()  # 在完成一项工作之后,使用这个方法可以向队列发送一个信号,表示该任务执行完毕
# q.join()  # 等待队列中所有任务(数据)执行完毕之后再往下执行,否则一直等待
# 注意点 :join是判断的依据。不单单指的是队列中没有数据,数据get出去之后,要使用task_done向队列发送一个信号,表示该任务执行完毕
# /数据使用完毕

在下面我们用代码来解释

Queue:先入先出队列

import queue

q1 = queue.Queue(3)  # 定义3 指定队列长度 表示只能塞3条数据 不写可以无限塞 
q1.put(1)  # 等待插入
q1.put(11)
q1.put(33)
# q1.put(33,block=False)  # 不等待插入 满了之后报错
# q1.put_nowait(33)  # 不等待插入 满了之后报错
print(q1.get())
print(q1.get())  # 先入先出获取 1先出 33最后出
print(q1.get())
# print(q1.get(block=False))  # 不等待获取 队列为空报错
# print(q1.get_nowait()) # 不等待获取 队列为空报错
# q1.put(3)
print(q1.qsize())  # 获取队列中的任务数/消息数
print(q1.full())  # 判断队列是否已满
print(q1.empty())  # 判断队列是否为空

q1.task_done()
q1.task_done()
q1.task_done() # 插入一条数据使用完成之后就要发送一条消息

q1.join()  # 收到task_done返回的信号,当都使用完成之后才会继续往下执行  如果任务没有完成那将不会向下执行
print('join之后')

LifoQueue:后入先出队列

import queue

q = queue.LifoQueue(3)

q.put(1)
q.put(2)
q.put(3)
print(q.get())
print(q.get())
print(q.get())  # 后进先出 其他方法与FIFO相同

PriorityQueue:优先级队列

import queue

q = queue.PriorityQueue(3)  # 其他方法与 FIFO 相同
q.put((1, '哈哈1'))  # 接受元组为参数 第一个是优先级数字型的 第二个是数据
q.put((88, '哈哈88'))
q.put((3, '哈哈3'))
print(q.get())
print(q.get())
print(q.get())  # 根据前面的优先级出,优先级数字小的先出

看完点赞 ~养成好习惯,以上内容希望对你有帮助,如果对软件测试、接口测试、自动化测试、面试经验交流感兴趣可以加入我们。642830685,免费领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!技术大牛解惑答疑,同行一起交流。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值