在 python線程隊列Queue-FIFO 文章中已經介紹了 先進先出隊列Queue,而今天給大家介紹的是第二種:線程隊列LifoQueue-LIFO,數據先進后出類型,兩者有什么區別呢?
一.隊列Queue分類:
1.線程隊列Queue — FIFO(先進先出隊列),即哪個數據先存入,取數據的時候先取哪個數據,同生活中的排隊買東西;
2.線程隊列LifoQueue — LIFO(先進后出隊列),即哪個數據最后存入的,取數據的時候先取,同生活中手槍的彈夾,子彈最后放入的先打出;
3.線程隊列PriorityQueue — PriorityQueue(優先級隊列),即存入數據時候加入一個優先級,取數據的時候優先級最高的取出;
今天只對第二種線程隊列Queue(LIFO)講解,最后一種留到下一篇文章在做詳細講解!
二.先進后出隊列LifoQueue簡介
如上面所述,與前一篇的Queue相反,最后存入的數據最先取出,最先存入的數據最后取出,如下圖所示:

如果說FIFO是吃什么拉什么,那么LIFO就是吃什么吐什么,先吃的后吐,后吃的先吐~~真是重口味呀!

三.先進后出隊列LifoQueue函數介紹
函數不做過多介紹了,已經在 python線程隊列Queue-FIFO 有了詳細講解,兩者都屬於Queue,函數都一樣!
四.先進后出隊列Queue-LIFO使用
# !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:何以解憂 @Blog(個人博客地址): shuopython.com @WeChat Official Account(微信公眾號):猿說python @Github:www.github.com @File:python_LifoQueue.py @Time:2019/11/29 15:25 @Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累! """ import queue import threading import time # 可以設置隊列的長度 q=queue.LifoQueue(5),意味着隊列中最多存放5個元素,當隊列滿的時候自動進入阻塞狀態 q=queue.LifoQueue() def put(): for i in range(10): q.put(i) print("數據%d被存入到隊列中" % i) q.join() print('ok') def get(): for i in range(10): value = q.get() print("數據%d從隊列中取出" % value) q.task_done() t1=threading.Thread(target=put,args=()) t1.start() t2=threading.Thread(target=get,args=()) t2.start()
輸出結果:
數據0被存入到隊列中
數據1被存入到隊列中
數據2被存入到隊列中
數據3被存入到隊列中
數據4被存入到隊列中
數據5被存入到隊列中
數據6被存入到隊列中
數據7被存入到隊列中
數據8被存入到隊列中
數據9被存入到隊列中
數據9從隊列中取出
數據8從隊列中取出
數據7從隊列中取出
數據6從隊列中取出
數據5從隊列中取出
數據4從隊列中取出
數據3從隊列中取出
數據2從隊列中取出
數據1從隊列中取出
數據0從隊列中取出
ok
猜你喜歡:
3.python __name__ == ‘__main__’詳細解釋
轉載請注明:猿說Python » python線程隊列LifoQueue-LIFO
技術交流、商務合作請直接聯系博主
掃碼或搜索:猿說python
猿說python
微信公眾號 掃一掃關注
