queue模块的使用

本文详细介绍了Python中的三种队列:FIFO队列、LIFO队列及优先级队列,并展示了队列的主要操作方法如put和get等。此外还解释了如何通过task_done和join方法确保任务的正确执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

queue模块

from queue import Queue,LifoQueue,PriorityQueue


# 队列——先进先出

que = Queue(5)

# 堆栈——先进后出

que = LifoQueue(5)

# 优先级队列——优先级低的先出

# que = PriorityQueue(5)


que.put('任意数据类型')
que.put(['任意数据类型(列表)'])
que.put({'任意数据类型(字典)':'aaaa'})
que.put({'这是集合'})
que.put(("元组也行",))

# 优先级队列专用(因为put里是元组,且第一个元素是可以互相比较的数据类型,这里默认用整型)
# que.put((2,'任意数据类型'))
# que.put((10,['任意数据类型(列表)']))
# que.put((5,{'任意数据类型(字典)':'aaaa'}))
# que.put((1,{'这是集合'}))
# que.put((100,("元组也行",)))

print(que.get())
que.task_done()

print(que.get())
que.task_done()

print(que.get())
que.task_done()

print(que.get())
que.task_done()

print(que.get())
que.task_done()

que.join()

Queue()队列

队列,先进先出

主要用法

  • put()
  • get()
  • put/get的默认参数
    • block
      • 默认为true
        • 当队列满了,再put就会进入等待状态
        • 当队列空了,再get就会进入等待状态
      • 当为False时
        • 当队列满了,再put就会抛错
        • 当队列空了,再get就会抛错
    • timeout
      • 只有当block为True时,才有意义
      • 设置等待状态所持续的时间,
        超出时间一样会报错

join()用法

  • 一个acquire()就要task_done()一次
  • 否则join()就阻塞住当前线程

LifoQueue()栈

栈,先进后出

主要用法

  • put()
  • get()

PriorityQueue()优先级队列

优先级队列,与优先级有关

主要用法

  • put()
  • get()

根据优先级来存放数据,基于堆,这个类基于的是大堆

即优先级低的先出来

都可以使用join()方法

重点:这里的每一种容器的put方法get时都要使用相同数量的task_down()方法

否则,join()方法会一直阻塞在这

传送门

XMind: ZEN - Trial Version

转载于:https://www.cnblogs.com/marklijian/p/11575213.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值