python 工具類之Queue組件詳解用法
簡(jiǎn)述
隊(duì)列一直都是工程化開發(fā)中經(jīng)常使用的數(shù)據(jù)類型,本篇文章主要介紹一下python queue的使用,會(huì)邊調(diào)試代碼,邊說明方法內(nèi)容。
環(huán)境
python: 3.6.13
單向隊(duì)列
初始化單向隊(duì)列
放置一些數(shù)據(jù)
可以使用full()方法判斷隊(duì)列是否已經(jīng)塞滿數(shù)據(jù),可以通過qsize()方法查看隊(duì)列內(nèi)元素?cái)?shù)量。
這時(shí)候我們從隊(duì)列取出數(shù)據(jù),看先取到的是什么。
現(xiàn)在隊(duì)列里面只有兩個(gè)數(shù),我們?cè)偃?個(gè)數(shù)看一下。
這個(gè)時(shí)候我們繼續(xù)塞入第六個(gè)數(shù)會(huì)怎么樣呢?
可以看到如果塞入超過隊(duì)列限定數(shù)量的元素,會(huì)阻塞住隊(duì)列。所以在一般的項(xiàng)目工程中,我們會(huì)分成兩個(gè)線程,一個(gè)消費(fèi)數(shù)據(jù),一個(gè)塞入隊(duì)列數(shù)據(jù)。按照業(yè)務(wù)需求看是否需要限定隊(duì)列長(zhǎng)度。
先進(jìn)后出隊(duì)列
上面展示的是先進(jìn)先出(FIFO)的單項(xiàng)隊(duì)列,python的queue模塊也提供先進(jìn)后出(LIFO)的隊(duì)列: LifoQueue,類似java的棧類型。
塞入數(shù)據(jù)后看取出的是在隊(duì)列的什么位置。
可以看出從隊(duì)列取出的是隊(duì)尾數(shù)據(jù)。
優(yōu)先級(jí)隊(duì)列
按照自定的優(yōu)先級(jí)來對(duì)隊(duì)列數(shù)據(jù)自動(dòng)排序:PriorityQueue。
塞入數(shù)據(jù)后,全部取出,打印看一下順序是什么樣的。
可以看出,書序是按照我們?nèi)霐?shù)據(jù)的級(jí)別由小到大排序的。
雙向隊(duì)列
雙向隊(duì)列,顧名思義就是可以從隊(duì)列兩端進(jìn)行處理:deque。
初始化,并塞入3個(gè)數(shù)據(jù)。
從左側(cè),也就是最前端塞入一個(gè)元素??聪滦Ч?。
可以自定義塞入元素的位置。
取出隊(duì)尾的數(shù)據(jù)。
取出隊(duì)首元素。
完整代碼
import queue # 單向隊(duì)列 q = queue.Queue(5) print(q.maxsize) q.put(1) q.put(2) q.put(3) print(q.full()) print(q.qsize()) print(q.get()) q.put(4) q.put(5) q.put(6) q.put(7) print(q.full()) print(q.qsize()) print(q.get()) # 先進(jìn)后出隊(duì)列 q = queue.LifoQueue(5) q.put(1) q.put(2) q.put(3) print(q.get()) # 優(yōu)先級(jí)隊(duì)列 q = queue.PriorityQueue(5) q.put((5, "電")) q.put((2, "雨")) q.put((4, "雷")) q.put((1, "風(fēng)")) while True: print(q.get()) # 雙向隊(duì)列 q = queue.deque() q.append(1) q.append(2) q.append(3) q.appendleft(4) q.insert(2, 5) print(q.pop()) print(q.popleft())
總結(jié)
在很多工程化架構(gòu)中,隊(duì)列數(shù)據(jù)類型是必不可少的?;顚W(xué)活用吧。哎,今年ti10,中國隊(duì)又無緣冠軍,明年加油吧。
如果本文對(duì)你有幫助,請(qǐng)點(diǎn)個(gè)贊支持一下吧。
到此這篇關(guān)于python 工具類之Queue組件詳解用法的文章就介紹到這了,更多相關(guān)python Queue組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python?queue模塊功能大全
- python隊(duì)列queue模塊詳解
- Python Queue模塊詳細(xì)介紹及實(shí)例
- Python Queue模塊詳解
- 關(guān)于Python中幾種隊(duì)列Queue用法區(qū)別
- Python隊(duì)列Queue超詳細(xì)講解
- python中的queue隊(duì)列類型及函數(shù)用法
- python3?queue多線程通信
- Python多線程 Queue 模塊常見用法
- 詳解python數(shù)據(jù)結(jié)構(gòu)之隊(duì)列Queue
- python3爬蟲中引用Queue的實(shí)例講解
- Python queue模塊的用法
相關(guān)文章
Python中的反射知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理了一篇關(guān)于Python中的反射知識(shí)點(diǎn)總結(jié)內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)參考下。2021-11-11Django框架視圖層URL映射與反向解析實(shí)例分析
這篇文章主要介紹了Django框架視圖層URL映射與反向解析,結(jié)合實(shí)例形式分析了Django框架普通url映射、命名URL參數(shù)映射、分布式URL映射、反向解析等相關(guān)操作技巧,需要的朋友可以參考下2019-07-07python 創(chuàng)建彈出式菜單的實(shí)現(xiàn)代碼
這篇文章主要介紹了python 創(chuàng)建彈出式菜單的實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-07-07Python中的類型提示(Type Hints)總結(jié)
Python3.5 版本引入了類型提示(Type Hints),它允許開發(fā)者在代碼中顯式地聲明變量、函數(shù)、方法等的類型信息,下面小編就來帶大家一起看看Python類型提示的初步使用吧2023-05-05Python3爬蟲中識(shí)別圖形驗(yàn)證碼的實(shí)例講解
在本篇內(nèi)容里小編給大家分享的是關(guān)于Python3爬蟲中識(shí)別圖形驗(yàn)證碼的實(shí)例講解內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。2020-07-07