亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

Python中線程安全隊列Queue的示例分析

發布時間:2022-02-24 13:37:23 來源:億速云 閱讀:160 作者:小新 欄目:開發技術

小編給大家分享一下Python中線程安全隊列Queue的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

一、什么是隊列?

像排隊一樣,從頭到尾排成一排,還可以有人繼續往后排隊,這就是隊列。

這里學委想說的是Queue這個類, 它是queue這個內置模塊內的一個類。

import queue
q = queue.Queue(5) #可以傳入參數指定隊列大小
queue.Queue()# 不傳或者給0或者<0的數字則創建一個無限長度的隊列

它提供了很多函數,下面幾個函數,我們使用的比較多:

  • get: 獲取并移除隊頭元素,就是出隊

  • put: 往隊列末尾加入元素,也就是后來者排隊

  • qsize: 獲取隊列的長度

  • empty: 隊列空了,沒有人在排了

  • full: 隊列滿了。

看著比較枯燥,學委畫了下圖展示:

Python中線程安全隊列Queue的示例分析

這個隊列put了3次,依次放入:持續學習,持續開發,我雷學委。隊列長度為3

二、隊列基操 入隊/出隊/查隊列狀態

準備了下面的代碼:

import queue

q = queue.Queue(5)

print("學委粉絲隊列:", q)
print("空隊,學委粉絲隊列大小:", q.qsize())
print("空隊列?", q.empty())
for i in range(5):
    q.put(i)

print("隊列滿了?", q.full())
print("排滿了,學委粉絲隊列大小:", q.qsize())

while not q.empty():
    print("粉絲 %s 出隊點贊!" % q.get())
print("最后,學委粉絲隊列大小:", q.qsize())

這段代碼創建了一個長的為5的隊列。

然后一個循環寫滿隊列,接著再依此出隊,粉絲出隊點贊。

下面是運行效果:

Python中線程安全隊列Queue的示例分析

是不是很簡單。

三、Queue是一個線程安全的類

前面幾篇文章,碰到下面的代碼(反復讀寫共享變量)結果總是出乎依賴!

amount = 100
def transfer(money):
    global amount
    for i in range(100000):
        amount += money

如果我們對隊列進行反復讀寫,會不會出現問題呢?

不妨,寫個代碼驗收一下:

import queue
import threading

xuewei_fans_q = queue.Queue()


def transfer(money):
    for i in range(100000):
        xuewei_fans_q.put(money)
        xuewei_fans_q.get()


# 創建4個任務重復給學委加關注/脫粉(還是希望各位編程的明日之星跟著學習,共同進步!)
t_group = []
for i in range(10):
    t = threading.Thread(target=lambda: transfer(-1))
    t_group.append(t)
    t.start()
    t = threading.Thread(target=lambda: transfer(1))
    t_group.append(t)
    t.start()
    t = threading.Thread(target=lambda: transfer(-1))
    t_group.append(t)
    t.start()
    t = threading.Thread(target=lambda: transfer(1))
    t_group.append(t)
    t.start()

for t in t_group:
    t.join()
print("-" * 16)
print("活躍線程數:", threading.active_count())
print("活躍線程:", threading.current_thread().name)
#反復對隊列進行添加數據,移除數據,隊列最后清零了
print("學委粉絲隊列:", xuewei_fans_q.qsize())

不管運行多少次,隊列(希望是黑粉隊列)都為0元素。

Python中線程安全隊列Queue的示例分析

看完了這篇文章,相信你對“Python中線程安全隊列Queue的示例分析”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

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

AI

专栏| 满洲里市| 绩溪县| 喜德县| 仙桃市| 治县。| 连云港市| 古田县| 满洲里市| 瑞丽市| 青阳县| 遵化市| 大名县| 天水市| 靖远县| 会东县| 靖州| 桐乡市| 鄯善县| 林甸县| 禹城市| 西峡县| 兴宁市| 宁南县| 屯昌县| 昌江| 惠水县| 香港| 博湖县| 班玛县| 济源市| 修武县| 桃园县| 余庆县| 乡城县| 兴隆县| 秭归县| 叶城县| 凤山县| 崇义县| 四平市|