python3 queue模塊

在之前的python版本中,對(duì)于queue模塊的引用都是

import Queue

當(dāng)我在python3 版本中同樣這樣導(dǎo)入,會(huì)返回

ModuleNotFoundError: No module named 'Queue'

意識(shí)到改版了的問題,嘴上輕生mmp,默默打開了官方文檔,在這記錄一下簡(jiǎn)單的用法。
首先,按照慣例,先來個(gè)簡(jiǎn)介

功能

queue模塊用于在多個(gè)線程之間交換信息

三種模式

FIFO:先進(jìn)先出,實(shí)力化方式:
fq = queue.Queue(maxsize)
maxsize:隊(duì)列的大小,如果小于或者等于0,就是一個(gè)無限大的隊(duì)列,本文中所有的maxsize都一個(gè)意思

LIFO:后進(jìn)先出
lq = queue.LifoQueue(maxsize)

Priority queue:優(yōu)先級(jí)隊(duì)列,默認(rèn)按照元素大小進(jìn)行排序,最小的最先輸出。
pq = queue.PriorityQueue(maxsize)

共有的常用方程

 Queue.qsize() 返回隊(duì)列的大小
 Queue.empty() 如果隊(duì)列為空,返回True,反之False
 Queue.full() 如果隊(duì)列滿了,返回True,反之False,    
 Queue.get([block[, timeout]])獲取隊(duì)列,timeout等待時(shí)間
 Queue.get_nowait() 相當(dāng)于Queue.get(block = False),非阻塞方法 Queue.put(item) 寫入隊(duì)列,timeout等待時(shí)間
 Queue.put_nowait(item)相當(dāng)于Queue.put(block = False),非阻塞方法
 Queue.task_done() 在完成一項(xiàng)工作之后,Queue.task_done()函數(shù)向任務(wù)已經(jīng)完成的隊(duì)列發(fā)送一個(gè)信號(hào)。每個(gè)get()調(diào)用得到一個(gè)任務(wù),接下來task_done()調(diào)用告訴隊(duì)列該任務(wù)已經(jīng)處理完畢。
 Queue.join() 實(shí)際上意味著等到隊(duì)列為空,再執(zhí)行別的操作

簡(jiǎn)介完畢,下面 上代碼!

import queue
#初始化一個(gè)大小為3的fifo隊(duì)列
fq = queue.Queue(3)
#用這個(gè)來看看基礎(chǔ)的常用方程
#判斷隊(duì)列是否為空,
print(fq.empty()) #這個(gè)位置的都是輸出結(jié)果 True
#添加一個(gè)元素
fq.put(13,block = True,timeout = 3) #無返回值
#判斷是否滿了
print(fq.full())  #False
print(fq.qsize()) # 1
#再添加一個(gè)元素
fq.put_nowait(23)
#取回元素
print(fq.get_nowait()) #13
print(fq.get()).  #23.   由此可以看出,這個(gè)是一個(gè)先進(jìn)先出的隊(duì)列

#后進(jìn)先出
lq = queue.LifoQueue()
for i in range(5):
   lq.put(i)
while not lq.empty():
   print(lq.get(),end=' ')
#4 3 2 1 0

#優(yōu)先級(jí)隊(duì)列
pq = queue.PriorityQueue()
pq.put(20)
pq.put(25)
pq.put(1)
while not pq.empty():
   print(pq.get(),end=' ')
#1 20 25

Note:優(yōu)先級(jí)隊(duì)列有很大的靈活性,它的sort函數(shù)可以根據(jù)自己的需求去寫。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容