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

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條評論
主站蜘蛛池模板: 精品久久久久久久免费加勒比 | 深夜福利国产 | 五月天婷婷在线观看 | 深夜精品寂寞在线观看黄网站 | 国内自拍 在线播放 网红 | 91精品久久 | 天天色天天射综合网 | 免费看一级毛片欧美 | 一级成人黄色片 | 亚洲精品一区二区三区在 | 国产成人精品亚洲日本在线 | 26uuu欧美日本 | 亚洲激情视频 | 免费国内精品久久久久影院 | 欧美精品国产日韩综合在线 | 91久久综合九色综合欧美亚洲 | 毛片黄 | 欧美精品综合一区二区三区 | 亚洲精品一区二区久久 | 亚洲美女精品视频 | 成人午夜在线视频 | 亚洲一级片在线观看 | 视频一区二区欧美日韩在线 | 欧美日韩一区在线观看 | 久久久久亚洲精品一区二区三区 | 国产精品日本一区二区不卡视频 | 亚洲视频网| 国产综合久久久久影院 | 成年人香蕉视频 | 四虎成人免费网址在线 | 五月激激激综合网色播免费 | 色综合网亚洲精品久久 | 精品一二区| 香蕉国产在线观看免费 | 男人的天堂视频 | 亚洲伊人久久综合一区二区 | 四虎网站最新 | 亚洲一区二区免费在线观看 | 中文字幕日韩哦哦哦 | 久久九九青青国产精品 | 亚洲偷图色综合色就色 |