day33-1 线程队列

线程队列

线程队列就是一个普通的容器,使用import queue,用法与进程Queue一样

先进先出

from queue import Queue

q = 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 LifoQueue

q = 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 PriorityQueue

q = 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 PriorityQueue


class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
	
    # 覆盖比较运算符,当两个对象之间使用比较运算符时,会自动执行该方法
    def __lt__(self, other):
        # 当两对象年龄相等时,比较名字,否则年龄小的先出
        if self.age == other.age:
            return self.name < other.name
        return self.age < other.age


p1 = 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
原文地址:https://www.cnblogs.com/863652104kai/p/11151622.html