這篇文章給大家分享的是有關python中隊列基本操作和多線程隊列的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
from queue import Queue q = Queue(5) # 創建一個容量為5的隊列。如果給一個小于0的數,則隊列為無限大小。(這是官方的解釋,實際不是無限大小,而是跟內存有關) # 存儲數據 q.put(123) # 數值 q.put('hello world!') # 字符串 q.put(['hello', 'world']) # 列表 q.put(('hello', 'world')) # 元組 q.put({'hello': 'world'}) # 字典 # 如果再試圖存儲第六個,則會發生阻塞,因為容量已設定為5 # q.put({'hello': 'python'})
取出隊列中的值:
print(q.get()) print(q.get()) print(q.get()) print(q.get()) print(q.get())
如圖五個值被依次取出。Queue
隊列遵循的是先進先出。
q.put_nowait()
q.put_nowait()
方法可以無阻礙地向隊列中添加內容,如果隊列已滿則會立即報錯,不會等待(即不會發生阻塞)。
q.get_nowait()
q.get_nowait()
方法可以無阻礙地從隊列中取出內容,如果隊列是空的則也會直接報錯,不會等待。
具體使用不再示例。
查看隊列當前大小
q.qsize()
print(q.qsize()) print(q.get()) print(q.qsize()) print(q.get()) print(q.qsize()) print(q.get()) print(q.qsize()) print(q.get()) print(q.qsize()) print(q.get()) print(q.qsize())
如圖,每取出一個值,隊列大小就減一。同樣每存入一個值隊列大小就會加一。
q.full()
判斷隊列是否是滿的。
q.empty()
判斷隊列是否是空的。
print(q.full()) print(q.get()) print(q.get()) print(q.full()) print(q.empty()) print(q.get()) print(q.get()) print(q.get()) print(q.empty())
from queue import Queue import threading import time # 存儲值,每隔一秒存儲一個 def set_value(q): num = 0 while True: q.put(num) num += 1 time.sleep(1) # 取值,不間斷地取 def get_value(q): while True: print(q.get()) if __name__ == '__main__': q = Queue(4) t1 = threading.Thread(target=set_value, args=(q, )) t2 = threading.Thread(target=get_value, args=(q, )) t1.start() t2.start()
程序開始運行,一邊存儲,一邊取值:
此思想應用在爬蟲上,即一邊訪問并獲取數據,一邊下載數據。
感謝各位的閱讀!關于“python中隊列基本操作和多線程隊列的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。