python隊列基本操作和多線程隊列
一、隊列基本操作
from queue import Queue
q = Queue(5) ?# 創(chuàng)建一個容量為5的隊列。如果給一個小于0的數(shù),則隊列為無限大小。(這是官方的解釋,實際不是無限大小,而是跟內(nèi)存有關)
# 存儲數(shù)據(jù)
q.put(123) ?# 數(shù)值?
q.put('hello world!') ?# 字符串
q.put(['hello', 'world']) ?# 列表
q.put(('hello', 'world')) ?# 元組
q.put({'hello': 'world'}) ?# 字典
# 如果再試圖存儲第六個,則會發(fā)生阻塞,因為容量已設定為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()方法可以無阻礙地向隊列中添加內(nèi)容,如果隊列已滿則會立即報錯,不會等待(即不會發(fā)生阻塞)。
q.get_nowait()
q.get_nowait()方法可以無阻礙地從隊列中取出內(nèi)容,如果隊列是空的則也會直接報錯,不會等待。
具體使用不再示例。
查看隊列當前大小
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()
程序開始運行,一邊存儲,一邊取值:

此思想應用在爬蟲上,即一邊訪問并獲取數(shù)據(jù),一邊下載數(shù)據(jù)。
到此這篇關于python隊列基本操作和多線程隊列的文章就介紹到這了,更多相關python隊列內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
tensorflow1.x和tensorflow2.x中的tensor轉換為字符串的實現(xiàn)
本文主要介紹了tensorflow1.x和tensorflow2.x中的tensor轉換為字符串的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-02-02
Python捕獲全局的KeyboardInterrupt異常的方法實現(xiàn)
KeyboardInterrupt異常是Python中的一個標準異常,它通常發(fā)生在用戶通過鍵盤中斷了一個正在運行的程序,本文主要介紹了Python捕獲全局的KeyboardInterrupt異常的方法實現(xiàn),感興趣的可以了解一下2024-08-08
tensorflow的ckpt及pb模型持久化方式及轉化詳解
今天小編就為大家分享一篇tensorflow的ckpt及pb模型持久化方式及轉化詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02

