前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python队列Queue

python队列Queue

作者头像
Autooooooo
发布2020-11-09 09:58:16
5890
发布2020-11-09 09:58:16
举报
文章被收录于专栏:Coxhuang

Queue

#1 环境

代码语言:javascript
复制
Python3.7.3

#2 开始

代码语言:javascript
复制
from queue import Queue,LifoQueue,PriorityQueue

#2.1 队列种类

  • FIFO(先进先出)
代码语言:javascript
复制
q = Queue(maxsize=0)
  • LIFO(后进先出)
代码语言:javascript
复制
q = LifoQueue(maxsize=0)
  • priority(优先队列)
代码语言:javascript
复制
q = PriorityQueue(maxsize=0)

# 后面详细说

maxsize : maxsize是个整数,指明了队列中能存放的数据个数的上限。一旦达到上限,插入会导致阻塞,直到队列中的数据被消费掉。如果maxsize小于或者等于0,队列大小没有限制。


#2.2 操作

  • 入队
代码语言:javascript
复制
put(item, block=True, timeout=None)

# item: 入队的数据(任何数据类型都可以)
# block: bool型,默认True
# timeout: 超时时间,默认None
# 1.当block为默认值时,如果队列已经处于"满队"状态,还要继续往队列插入数据,这时timeout的值就是程序抛异常的时间(timeout=None时,程序永远处于"堵塞"状态,除非有数据"出队")
# 2.当block=False时,不论timeout是什么,只要队列"堵塞"就马上抛异常
  • 出队
代码语言:javascript
复制
get(block=True, timeout=None)

# block: bool型,默认True
# timeout: 超时时间,默认None
# 1.当block为默认值时(True),如果队列已经处于"空"状态,还要继续"出队",这时timeout的值就是程序抛异常的时间(timeout=None时,程序永远处于"空转"状态(无限循环),除非有数据"入队")
# 2.当block=False时,不论timeout是什么,只要队列"空转"就马上抛异常
  • 获取队列大小
代码语言:javascript
复制
q.qsize()
  • 获取队列是否为空
代码语言:javascript
复制
# 如果队列为空,返回True,反之False 
q.empty()
  • 判断队列是否"满队"
代码语言:javascript
复制
# 如果队列满了,返回True,反之False
q.full()
  • 清空队列
代码语言:javascript
复制
q.queue.clear()

#2.3 优先队列 (PriorityQueue)

代码语言:javascript
复制
from queue import PriorityQueue
q = PriorityQueue()

class Job(object):
    def __init__(self, priority, description):
        self.priority = priority
        self.description = description
        print('入队:', description)
        return

    def __lt__(self, other):
        return self.priority < other.priority
        
# 数字越小,优先级越高
q.put(Job(1,"aaa"))
q.put(Job(2,"bbb"))
q.put(Job(8,"ccc"))
q.put(Job(3,"ddd"))
print(q.get().description)
print(q.get().description)
print(q.get().description)
print(q.get().description)
20190502193718-image.png
20190502193718-image.png

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/05/02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Queue
  • #1 环境
  • #2 开始
    • #2.1 队列种类
      • #2.2 操作
        • #2.3 优先队列 (PriorityQueue)
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档