Python先进后出队列(LifoQueue)

Python先进后出队列(LifoQueue)教程

Python 中的队列分为三种,即先进先出(FIFO)队列、先进后出(LIFO)队列以及 优先级队列。其中,先进后出(LIFO)队列在 Python 中使用 LifoQueue 表示,先进后出队列类似于栈,即哪个数据最后存入的,取数据的时候最先取出。

案例

使用队列实现先进后出

使用 Python Queue 实现队列的先进后出

import queue import threading # 可以设置队列的长度 q=queue.LifoQueue(5),意味着队列中最多存放5个元素,当队列满的时候自动进入阻塞状态 q = queue.LifoQueue(5) def put(): for i in range(3): q.put(i) print("数据 %d 被存入到队列中" % i) q.join() def get(): for i in range(3): value = q.get() print("数据 %d 从队列中取出" % value) q.task_done() if __name__ == '__main__': print("嗨客网(www.haicoder.net)") t1 = threading.Thread(target=put, args=()) t1.start() t2 = threading.Thread(target=get, args=()) t2.start()

程序运行后,控制台输出如下:

21 python优先队列queue.png

我们首先使用 queue.Queue 创建了一个大小为 5 的队列 q,接着,我们创建了两个线程,即 put 和 get,其中 put 负责向队列写入数据, get 负责从队列获取数据。

从运行结果,我们发现,我们写入数据的顺序是正序的,但是我们取出数据的顺序却是逆序的,这就说明,最新存进去的数据是最后出来的,也就是先进后出队列。

Python先进后出队列(LifoQueue)教程总结

先进后出(LIFO)队列在 Python 中使用 LifoQueue 表示,先进后出队列类似于栈,即哪个数据最后存入的,取数据的时候最先取出。