溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中隊列基本操作和多線程隊列的示例分析

發布時間:2022-02-10 14:31:15 來源:億速云 閱讀:193 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關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())

python中隊列基本操作和多線程隊列的示例分析

如圖五個值被依次取出。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())

python中隊列基本操作和多線程隊列的示例分析

如圖,每取出一個值,隊列大小就減一。同樣每存入一個值隊列大小就會加一。

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中隊列基本操作和多線程隊列的示例分析

此思想應用在爬蟲上,即一邊訪問并獲取數據,一邊下載數據。

感謝各位的閱讀!關于“python中隊列基本操作和多線程隊列的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女