亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python程序 線程隊列queue使用方法解析

系統(tǒng) 1687 0

一、線程隊列

queue隊列:使用方法同進程的Queue一樣

如果必須在多個線程之間安全地交換信息時,隊列在線程編程中尤其有用。

重要:

q.put() :往隊列里面放值,當參數(shù)block=Ture的時候,timeout參數(shù)將會有作用,當隊列已經(jīng)滿了的時候,在往里面放值時,block為True程序?qū)却齮imeout的時間,過了時間程序會報錯,block如果為Flase時,程序不會等待直接報錯

q.get() :從隊列里面取值,當參數(shù)block=Ture的時候,timeout參數(shù)將會有作用,當隊列已經(jīng)空了的時候,在從里面取值時,block為True程序?qū)却齮imeout的時間,過了時間程序會報錯,block如果為Flase時,程序不會等待直接報錯

q.task_done() :使用者使用此方法發(fā)出信號,表示q.get()返回的項目已經(jīng)被處理。如果調(diào)用此方法的次數(shù)大于從隊列中刪除的項目數(shù)量,將引發(fā)ValueError異常。

q.join() :生產(chǎn)者將使用此方法進行阻塞,直到隊列中所有項目均被處理。阻塞將持續(xù)到為隊列中的每個項目均調(diào)用q.task_done()方法為止。

二、線程隊列的取值方式

2.1 先進先出

class queue.Queue(maxsize=0)

q = queue.Queue() :不加參數(shù)代表隊列可以無限的放數(shù)據(jù)

            
q = queue.Queue() #不加參數(shù)代表隊列可以無限的放數(shù)據(jù)
q.put('Cecilia陳')
q.put('xichen')
print(q.get())
print(q.get())
'''
結(jié)果:
Cecilia陳
xichen
'''
          

2.2 后進先出

class queue.LifoQueue(maxsize=0)

q = Lifo.Queue() :不加參數(shù)代表隊列可以無限的放數(shù)據(jù)

            
q = queue.LifoQueue() #不加參數(shù)代表隊列可以無線的放數(shù)據(jù)
q.put('Cecilia陳')
q.put('xichen')

print(q.get())
print(q.get())
'''
結(jié)果:
xichen
Cecilia陳
'''
          

三、隊列存數(shù)據(jù)時可以設置優(yōu)先級

class queue.priorityQueue(maxsize=0)

q = queue.priorityQueue() :不加參數(shù)代表隊列可以無限的放數(shù)據(jù)

3.1 優(yōu)先級隊列

            
# 3.優(yōu)先級隊列
q = queue.PriorityQueue() #不加參數(shù)代表隊列可以無線的放數(shù)據(jù)
#put進入一個元組,元組的第一個元素是優(yōu)先級(通常是數(shù)字,也可以是非數(shù)字之間的比較),數(shù)字越小優(yōu)先級越高
q.put((2,'Cecilia陳'))
q.put((1,'xichen'))
q.put((5,'xuchen'))

print(q.get())
print(q.get())
print(q.get())
'''
# 結(jié)果(數(shù)字越小優(yōu)先級越高,優(yōu)先級高的優(yōu)先出隊):
結(jié)果:
(1, 'xichen')
(2, 'Cecilia陳')
(5, 'xuchen')
'''
          

3.2 方法說明

maxsize 是一個整數(shù),它設置可以放置在隊列中的項數(shù)的上限。一旦達到此大小,插入將阻塞,直到使用隊列項。如果maxsize小于或等于零,則隊列大小為無窮大。

p.put() :放值的時候,放的是一個元組()

exception queue.Empty :異常隊列。空:當對空的隊列對象調(diào)用非阻塞 get() 或 get_nowait() 時引發(fā)異常,也就是說隊列為空的時候,再取值就會報錯

exception queue.Full :異常隊列。Full:當對已滿的隊列對象調(diào)用非阻塞put() 或 put_nowait() 時引發(fā)異常。也就是說當隊列已滿的時候,再往里面當值的時候?qū)箦e

Queue.qsize () :

empty() :如果為空,返回True

Queue.full() :如果已滿,返回True

put_nowait(item) :等同于put(item, False)。

get_nowait() :等同于get(False)。

提供了兩種方法來支持跟蹤已加入隊列的任務是否已被守護進程使用者線程完全處理:

task_done() :表示以前加入隊列的任務已經(jīng)完成。由隊列使用者線程使用。對于用于獲取任務的每個get(),后續(xù)對task_done()的調(diào)用告訴隊列任務上的處理已經(jīng)完成。如果join(當前處于阻塞狀態(tài),那么在處理完所有項之后,它將繼續(xù)運行(這意味著對于已經(jīng)放入隊列()的每個項,都收到了task_done()調(diào)用)。

如果調(diào)用次數(shù)超過放置在隊列中的項的次數(shù),則引發(fā)ValueError。

Queue.join() :塊直到隊列被消費完畢。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。


更多文章、技術(shù)交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!??!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 伊人久久成人成综合网222 | 伊人手机在线视频 | 亚洲人成一区二区三区 | 中文字幕不卡一区2021 | 白蛇缘起3免费观看 | 久久99国产精品一区二区 | 亚洲欧美一区二区三区不卡 | 国产美女精品视频 | 欧美 日韩 国产在线 | 免费夜色污私人影院网站 | 色狠狠成人综合色 | 一级黄色毛片免费看 | 久久乐国产综合亚洲精品 | 免费看黄色的视频 | www.四虎影视 | a级毛片高清免费视频 | 成人精品综合免费视频 | 天天弄天天干 | 国产凹凸在线一区二区色老头 | 久热这里只有精 | 天堂伊人网 | 日本一区二区日本免费 | 91久久国产成人免费观看资源 | 白蛇缘起3免费观看 | 亚洲国产精品毛片∧v卡在线 | 日韩日b| 最新精品国产 | 中国大乳久久 | 国产亚洲欧美日韩综合综合二区 | 99久女女精品视频在线观看 | 大狠狠大臿蕉香蕉大视频 | 狠狠狠狼鲁欧美综合网免费 | 国产精品九九热 | 日韩爱爱视频 | 欧美性猛交ⅹxxx乱大交免费 | 精久久 | 欧美日韩在线观看视频 | 国产女人伦码一区二区三区不卡 | 久99频这里只精品23热 视频 | 欧美日韩激情在线一区 | 亚洲国产第一区 |