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

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

系統 1903 0

一、線程隊列

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

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

重要:

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

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

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

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

二、線程隊列的取值方式

2.1 先進先出

class queue.Queue(maxsize=0)

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

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

2.2 后進先出

class queue.LifoQueue(maxsize=0)

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

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

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

三、隊列存數據時可以設置優先級

class queue.priorityQueue(maxsize=0)

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

3.1 優先級隊列

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

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

3.2 方法說明

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

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

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

exception queue.Full :異常隊列。Full:當對已滿的隊列對象調用非阻塞put() 或 put_nowait() 時引發異常。也就是說當隊列已滿的時候,再往里面當值的時候將會報錯

Queue.qsize () :

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

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

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

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

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

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

如果調用次數超過放置在隊列中的項的次數,則引發ValueError。

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

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


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲 欧洲 自拍 另类 校园 | 99亚洲乱人伦精品 | 亚洲黄a | 波多野结衣一区二区 | 国产亚洲欧美精品久久久 | 国产精品亚洲成在人线 | 国产国语高清在线视频二区 | 国产一区在线播放 | 99热只有精品一区二区 | 综合色久 | 日韩欧美在线观看视频一区二区 | 成人欧美一区二区三区视频xxx | 久操免费在线 | 九九热在线播放 | 色噜噜狠狠成人中文小说 | 亚洲系列在线 | 免费一级成人免费观看 | 4hu四虎免费影院www | 97视频精品全国在线观看 | 大胆国模一区二区三区伊人 | 久久久精品久久久久特色影视 | 国99久9在线 | 免费 | 免费看a毛片 | 日韩久操| 成人免费大片a毛片 | 奇米影视亚洲 | 欧美成人七十二式性视频教程 | 综合色在线观看 | 国产精品久久久久久久久免费观看 | 大陆一级毛片 | 国产一区二区三区久久精品 | 玖玖精品在线视频 | 伊人热久久| 久久欧美精品 | 国产精品久久久久久影院 | 中文字幕亚洲 综合久久 | 四虎免费观看 | 久久久久久青草大香综合精品 | 久久精品国产精品2020 | 日韩有码在线播放 | 午夜性爽视频男人的天堂在线 |