您好,登錄后才能下訂單哦!
在?python線程隊列Queue-FIFO? 文章中已經介紹了 先進先出隊列Queue,而今天給大家介紹的是第二種:線程隊列LifoQueue-LIFO,數據先進后出類型,兩者有什么區別呢?
?
1.線程隊列Queue?— FIFO(先進先出隊列),即哪個數據先存入,取數據的時候先取哪個數據,同生活中的排隊買東西;
2.線程隊列LifoQueue?— LIFO(先進后出隊列),即哪個數據最后存入的,取數據的時候先取,如同打臺球,先進洞的球最后取出,最后進洞的球最先拿出;
3.線程隊列PriorityQueue?— PriorityQueue(優先級隊列),即存入數據時候加入一個優先級,取數據的時候優先級最高的取出;
今天只對第二種線程隊列Queue(LIFO)講解,最后一種留到下一篇文章在做詳細講解!
?
?
如上面所述,與前一篇的Queue相反,最后存入的數據最先取出,最先存入的數據最后取出,如下圖所示:
如果說FIFO是吃什么拉什么,那么LIFO就是吃什么吐什么,先吃的后吐,后吃的先吐~~真是重口味呀!
?
函數不做過多介紹了,已經在?python線程隊列Queue-FIFO?有了詳細講解,兩者都屬于Queue,函數都一樣!
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | # !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() |
輸出結果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 數據0被存入到隊列中 數據1被存入到隊列中 數據2被存入到隊列中 數據3被存入到隊列中 數據4被存入到隊列中 數據5被存入到隊列中 數據6被存入到隊列中 數據7被存入到隊列中 數據8被存入到隊列中 數據9被存入到隊列中 數據9從隊列中取出 數據8從隊列中取出 數據7從隊列中取出 數據6從隊列中取出 數據5從隊列中取出 數據4從隊列中取出 數據3從隊列中取出 數據2從隊列中取出 數據1從隊列中取出 數據0從隊列中取出 ok |
?
?
1.python線程隊列Queue-FIFO
2.python 異常處理
3.python __name__ == ‘__main__’詳細解釋
4.python 不定長參數 *argc,**kargcs
?
轉載請注明:猿說Python???python線程隊列LifoQueue-LIFO
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。