Queue在python的實(shí)例化
1、Queue的方法
實(shí)例化Queue(),未指定可接收信息的參數(shù)或該參數(shù)為負(fù)數(shù),則默認(rèn)無(wú)上限(內(nèi)存上限)
Queue.qsize():返回當(dāng)前隊(duì)列包含消息的數(shù)量
Queue.empty():判斷隊(duì)列是否為空,是為T(mén)rue,否為False
Queue.full():判斷隊(duì)列是否滿(mǎn)了,是為T(mén)rue,否為False
Queue.get([block[,timeout]]):獲取一條隊(duì)列的消息,然后將其從隊(duì)列中刪除,black默認(rèn)為T(mén)rue
如果block為默認(rèn)值,沒(méi)有設(shè)置timeout,消息隊(duì)列又為空,那么此時(shí)程序?qū)?huì)阻塞(停在讀取狀態(tài)),直到隊(duì)列中有值,從消息隊(duì)列中讀取到值.如果設(shè)置了timeout,等待timeout的時(shí)間就會(huì)報(bào)出(Queue.Empty)異常
如果block為False,消息隊(duì)列為空,則會(huì)立刻拋出(Queue.Empty)異常
2、實(shí)例化
frommultiprocessingimportQueue
q=Queue(3)#在實(shí)例化時(shí)傳入消息隊(duì)列的數(shù)量
q.put("test1")
q.put("test2")
print(q.full())#這里隊(duì)列未滿(mǎn),返回False
q.put("test3")
print(q.full())#這里隊(duì)列已經(jīng)滿(mǎn)了,返回True
try:
q.put("test4",timeout=2)#在寫(xiě)入時(shí),如果隊(duì)列是滿(mǎn)的,就等待兩秒鐘,如還不可以,拋出異常
except:
print("當(dāng)前消息隊(duì)列的數(shù)量為%s"%q.qsize())
try:
q.put("test4",block=False)#在寫(xiě)入時(shí),如果隊(duì)列是滿(mǎn)的,直接拋出異常
except:
print("當(dāng)前消息隊(duì)列的數(shù)量為%s"%q.qsize())
#在寫(xiě)入之前,可以判斷下隊(duì)列是否是滿(mǎn)的
ifnotq.full():
q.put_nowait("test4")
#同理,在取數(shù)之前,判斷隊(duì)列是否為空
ifnotq.empty():
foriinrange(q.qsize()):
print(q.get_nowait())
以上就是Queue在python實(shí)例化的方法,希望能對(duì)大家有所幫助,更多Python學(xué)習(xí)教程請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。