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

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热精品 | 亚洲原创区 | 国产成人小视频在线观看 | 精品亚洲视频在线观看 | 人人干人人干 | 精品国产乱码久久久久久浪潮 | 偷偷狠狠的日日日日 | 国产一区亚洲二区三区 | 又粗又大的机巴好爽欧美 | 久久精品国产2020观看福利色 | 97精品在线 | 狠狠色噜噜狠狠狠狠米奇777 | 国产aaa毛片 | 欧美一级片网站 | 日本操比| 在线日产一区二区 | 亚洲精品一区二区久久 | 色鬼久久爱综合久久鬼色 | 成人国内精品久久久久影院 | 久久久久久久久久爱 | 久久久久久综合一区中文字幕 | 久久草视频在线 | 日本xxxx色视频在线观看免 | 亚洲精品99久久久久久 | 久久精品亚洲 | 91久久综合九色综合欧美98 | 天天做天天爱天天综合网 | 久久草在线观看视频 | 一级欧美毛片成人 | 国产aa免费视频 | 国产欧美精品国产国产专区 | 夜夜夜夜夜夜爽噜噜噜噜噜噜 | 午夜狠狠干 |