回顾:
进程队列:
from multiprocessing import Queue
q = Queue(3) #先进先出,3是队列深度。
线程队列:
import queue
先进先出
import queue q = queue.Queue(3) # 先进先出 q.put('3') q.put([1, 2, 3, 6]) q.put({'a': 1}) # q.put('444', block=True, timeout=3) #队列满,3秒后抛出队列满异常 raise Full # q.put_nowait('4343') print(q.get(block=True, timeout=2)) print(q.get(block=True, timeout=2)) print(q.get_nowait())
运行结果:
3 [1, 2, 3, 6] {'a': 1}
后进先出:
import queue q = queue.LifoQueue(3) # last in first out 后进先出 堆栈 q.put('3') q.put([1, 2, 3, 6]) q.put({'a': 1}) # q.put('444', block=True, timeout=3) #队列满,3秒后抛出队列满异常 raise Full # q.put_nowait('4343') print(q.get(block=True, timeout=2)) print(q.get(block=True, timeout=2)) print(q.get_nowait())
运行结果:
{'a': 1} [1, 2, 3, 6] 3
优化队列:
import queue q = queue.PriorityQueue(3) q.put((1, 'a')) # 格式 (priority number, data) 数字越小,优先级最高 q.put((30, ['a', 1])) q.put((20, {'a': 2})) print(q.get_nowait()) print(q.get_nowait()) print(q.get_nowait()) # print(q.get_nowait()) # raise Empty
运行结果:
(1, 'a') (20, {'a': 2}) (30, ['a', 1])