赞
赏
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()
程序运行后,控制台输出如下:
我们首先使用 queue.Queue 创建了一个大小为 5 的队列 q,接着,我们创建了两个线程,即 put 和 get,其中 put 负责向队列写入数据, get 负责从队列获取数据。
从运行结果,我们发现,我们写入数据的顺序是正序的,但是我们取出数据的顺序却是逆序的,这就说明,最新存进去的数据是最后出来的,也就是先进后出队列。
先进后出(LIFO)队列在 Python 中使用 LifoQueue 表示,先进后出队列类似于栈,即哪个数据最后存入的,取数据的时候最先取出。