python 線程隊列LifoQueue-LIFO(36)


   

 

    在 python線程隊列Queue-FIFO  文章中已經介紹了 先進先出隊列Queue,而今天給大家介紹的是第二種:線程隊列LifoQueue-LIFO,數據先進后出類型,兩者有什么區別呢?

 

一.隊列Queue分類:

    1.線程隊列Queue — FIFO(先進先出隊列),即哪個數據先存入,取數據的時候先取哪個數據,同生活中的排隊買東西;

    2.線程隊列LifoQueue — LIFO(先進后出隊列),即哪個數據最后存入的,取數據的時候先取,同生活中手槍的彈夾,子彈最后放入的先打出;

    3.線程隊列PriorityQueue — PriorityQueue(優先級隊列),即存入數據時候加入一個優先級,取數據的時候優先級最高的取出;

    今天只對第二種線程隊列Queue(LIFO)講解,最后一種留到下一篇文章在做詳細講解!

 

 

二.先進后出隊列LifoQueue簡介

    如上面所述,與前一篇的Queue相反,最后存入的數據最先取出,最先存入的數據最后取出,如下圖所示:

隊列lifo

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

LifoQueue

 

三.先進后出隊列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

 

 

 

猜你喜歡:

    1.python線程隊列Queue-FIFO

    2.python 異常處理

    3.python __name__ == ‘__main__’詳細解釋

    4.python 不定長參數 *argc,**kargcs

 

    轉載請注明:猿說Python » python線程隊列LifoQueue-LIFO

 

技術交流、商務合作請直接聯系博主
掃碼或搜索:猿說python
python教程公眾號
猿說python
微信公眾號 掃一掃關注


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM