中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Python線程下queue隊(duì)列模塊的用法-創(chuàng)新互聯(lián)

Python線程下queue隊(duì)列模塊的用法,針對這個(gè)問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),凌海企業(yè)網(wǎng)站建設(shè),凌海品牌網(wǎng)站建設(shè),網(wǎng)站定制,凌海網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,凌海網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

queue模塊實(shí)現(xiàn)了各種【多生產(chǎn)者-多消費(fèi)者】隊(duì)列。可用于在執(zhí)行的多個(gè)線程之間安全的交換信息。

queue模塊定義了3種不同的隊(duì)列類。

3種不同的隊(duì)列類

q=Queue(maxsize):創(chuàng)建一個(gè)FIFO(first-in first-out,先進(jìn)先出)隊(duì)列。maxsize是隊(duì)列中金額以放入的項(xiàng)的較大數(shù)量。

如果省略maxsize參數(shù)或?qū)⑺脼?,隊(duì)列大小將無窮大。

q=LifoQueue(maxsize):創(chuàng)建一個(gè)LIFO(last-in first-out,后進(jìn)先出)隊(duì)列(棧)。

q=PriorityQueue(maxsize):創(chuàng)建一個(gè)優(yōu)先級(jí)隊(duì)列,其中項(xiàng)按照優(yōu)先級(jí)從低到高依次排好。

使用這種隊(duì)列時(shí),項(xiàng)應(yīng)該是(priority,data)形式的元組,其中priority時(shí)一個(gè)標(biāo)識(shí)優(yōu)先級(jí)的數(shù)字。

常用方法

q.size():返回隊(duì)列的正確大小。因?yàn)槠渌€程可能正在更新此隊(duì)列,所以此方法的返回?cái)?shù)字不可靠。

q.empty():如果隊(duì)列為空,返回True,否則返回False。

q.full():如果隊(duì)列已滿,返回True,否則返回False。

q.put(item,block,timeout):將item放入隊(duì)列。

如果block設(shè)為True(默認(rèn)值),調(diào)用者將被阻塞直到隊(duì)列中出現(xiàn)可用的空閑位置為止。

如果block設(shè)為False,隊(duì)列滿時(shí)此方法將引發(fā)Full異常。

q.put_nowait(item):等價(jià)于q.put(item,False)

q.get(block,timeout):從隊(duì)列中刪除一項(xiàng),然后返回這個(gè)項(xiàng)。

如果block設(shè)為True(默認(rèn)值),調(diào)用者將阻塞,直到隊(duì)列中出現(xiàn)可用的空閑為止。

如果block設(shè)為False,隊(duì)列為空時(shí)將引發(fā)Empty異常。

timeout提供可選的超時(shí)值,單位為秒,如果超時(shí),將引發(fā)Empty異常。

q.get_nowait():等價(jià)于get(0)

q.task_done():在隊(duì)列種數(shù)據(jù)的消費(fèi)者用來指示對于項(xiàng)的處理已經(jīng)結(jié)束。如果使用此方法,那么從隊(duì)列中刪除的每一項(xiàng)都應(yīng)該調(diào)用一次。

q.join():阻塞直到隊(duì)列中的所有項(xiàng)均被刪除和處理為止。一旦為隊(duì)列中的每一項(xiàng)都調(diào)用了一次q.task_done()方法,此方法將會(huì)直接返回。

實(shí)例:

使用 隊(duì)列一般可以簡化多線程的程序。例如,可以使用共享隊(duì)列將線程連接在一起,而不必依賴鎖的保護(hù)。

在這種模型下,工作者線程一般充當(dāng)數(shù)據(jù)的消費(fèi)者。

from threading import Thread

from queue import Queue

class WorkerThread(Thread):

def __init__(self,*args,**kwargs):

Thread.__init__(self,*args,**kwargs)

self.input_queue=Queue()

def send(self,item):

self.input_queue.put(item)

def close(self):

self.input_queue.put(None)

self.input_queue.join()

def run(self):

while True:

item=self.input_queue.get()

if item is None:

break

#實(shí)際開發(fā)中,此處應(yīng)該使用有用的工作代替

print(item)

self.input_queue.task_done()

#完成,指示收到和返回哨兵

self.input_queue.task_done()

return

if __name__=="__main__":

w=WorkerThread()

w.start()

w.send("學(xué)")

w.send("步")

w.send("園")

w.send("網(wǎng)")

w.close()

運(yùn)行結(jié)果:

學(xué)

網(wǎng)

關(guān)于Python線程下queue隊(duì)列模塊的用法問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

當(dāng)前標(biāo)題:Python線程下queue隊(duì)列模塊的用法-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://www.rwnh.cn/article28/cepsjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)自適應(yīng)網(wǎng)站、品牌網(wǎng)站制作、軟件開發(fā)、網(wǎng)站設(shè)計(jì)公司、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
临澧县| 从化市| 若羌县| 和平区| 讷河市| 辛集市| 麻栗坡县| 木兰县| 汕头市| 天峨县| 桦甸市| 日土县| 台北市| 额敏县| 嘉义市| 东城区| 翼城县| 溧水县| 武安市| 沧源| 固原市| 射洪县| 黄大仙区| 枣庄市| 渭南市| 永泰县| 乌审旗| 章丘市| 政和县| 桐城市| 惠来县| 土默特左旗| 明光市| 宜兰县| 清镇市| 商洛市| 高雄市| 荆门市| 六枝特区| 徐州市| 阿尔山市|