- 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
代码语言: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,