线程队列
线程队列就是一个普通的容器,使用import queue
,用法与进程Queue一样
先进先出
from queue import Queueq = Queue()
q.put(2)
q.put('a')
q.put((2, 1))print(q.get()) # 2
print(q.get()) # 'a'
print(q.get()) # (2, 1)
后进先出:用于模拟栈这种容器
from queue import LifoQueueq = LifoQueue()
q.put(2)
q.put('a')
q.put((2, 1))print(q.get()) # (2, 1)
print(q.get()) # 'a'
print(q.get()) # 2
存储数据时可设置优先级
from queue import PriorityQueueq = PriorityQueue()
q.put(2)
q.put(3)
q.put(1)# 取出数据时会比较大小,越小的优先级越高
print(q.get()) # 1
print(q.get()) # 2
print(q.get()) # 3
--------------------------------------------------------------------------------# 自定义设置优先级
from queue import PriorityQueueclass Person:def __init__(self, name, age):self.name = nameself.age = age# 覆盖比较运算符,当两个对象之间使用比较运算符时,会自动执行该方法def __lt__(self, other):# 当两对象年龄相等时,比较名字,否则年龄小的先出if self.age == other.age:return self.name < other.namereturn self.age < other.agep1 = Person('nick', 18)
p2 = Person('tank', 17)
p3 = Person('jerry', 17)
q = PriorityQueue()
q.put(p1)
q.put(p2)
q.put(p3)
print(q.get().name) # jerry
print(q.get().name) # tank
print(q.get().name) # nick