前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 系列文章 —— queue

Python 系列文章 —— queue

原创
作者头像
玩转编程
发布2022-01-13 11:00:06
2700
发布2022-01-13 11:00:06
举报
文章被收录于专栏:玩转编程
  • queue_common_function_demo
代码语言:javascript
复制
import queue
q = queue.Queue()
q.put(100)
q.put(200)
q.qsize() # 获取队列大小,此处结果为 2


import queue
q = queue.Queue(maxsize=1)
q.empty() # 判断队列是否空,此处结果为 True
q.full() # 判断队列是否满,此处结果为 False
q.put(100)
q.empty() # False
q.full() # True
  • queue_put_get_demo
代码语言:javascript
复制
import queue
q = queue.Queue(maxsize=1)
q.put(100)


import queue
q = queue.Queue(maxsize=1)
q.put(100)
q.put(100,True,2) # 创建一个容量为 1 的队列,2 秒内没有位置添加任务则引发 Full 异常
q.put(100) # 该方法会一直阻塞


import queue
q = queue.Queue(maxsize=1)
q.put(100)
q.put(100,False,2) # 创建一个容量为 1 的队列,在第二次放入任务时指定为非阻塞模式,则会立刻引发 Full 异常


import queue
q = queue.Queue()
q.put(100)
q.get() # 此处的返回值为 100。交互模式下才会有输出,如果用 idea 请使用 print(q.get()) 查看结果(下同)

import queue
q = queue.Queue()
q.put(100)
q.get() # 此处的返回值为 100
q.get(True,2) # 2 秒钟内没有任务可获取,则引发 Empty 异常
q.get() # 因为队列为空,所以该方法会一直阻塞


import queue
q = queue.Queue()
q.put(100)
q.get() # 此处的返回值为 100
q.get(False,2) # 指定为非阻塞模式,队列为空则立即引发 Empty 异常
  • queue_three_queue_compare_demo
代码语言:javascript
复制
# FIFO 队列
import queue
q = queue.Queue()
for index in range(10):
    q.put(index)
while not q.empty():
    print(q.get(), end=", ")
# 输出结果如下
# 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 


# LIFO 队列
import queue
q = queue.LifoQueue()
for index in range(10):
    q.put(index)
while not q.empty():
    print(q.get(), end=", ")
# 输出结果如下
# 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 


# 优先级队列,存放内置类型
import queue
q = queue.PriorityQueue()
for index in range(10,0,-1):
    q.put(index)
while not q.empty():
    print(q.get(), end=", ")
# 输出结果如下
# 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 


# 优先级队列,存放元组
import queue
q = queue.PriorityQueue()
q.put(["d","b"])
q.put(["c","b"])
while not q.empty():
    print(q.get(), end=", ")
# 输出结果如下
# ['c', 'b'], ['d', 'b'], 


# 优先级队列,存放自定义类型
import queue
q = queue.PriorityQueue()

class Animal:
    def __init__(self, age, name):
        self.age = age
        self.name = name
    def __lt__(self, other): # 实现 < 操作
        return self.age < other.age # 如果将 < 变成 > 相当于逆序

q.put(Animal(3,"cat"))
q.put(Animal(2,"dog"))

while not q.empty():
    animal = q.get()
    print(animal.name, animal.age, end=", ")
# 输出结果如下
# dog 2, cat 3, 

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档