中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Python互斥鎖怎么解決多線程問題

發布時間:2021-04-28 13:46:57 來源:億速云 閱讀:177 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關Python互斥鎖怎么解決多線程問題的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

python主要應用領域有哪些

1、云計算,典型應用OpenStack。2、WEB前端開發,眾多大型網站均為Python開發。3.人工智能應用,基于大數據分析和深度學習而發展出來的人工智能本質上已經無法離開python。4、系統運維工程項目,自動化運維的標配就是python+Django/flask。5、金融理財分析,量化交易,金融分析。6、大數據分析。

1、說明

當多個線程幾乎同時修改共享數據時,需要同步控制。

線程同步可以保證多線程安全訪問競爭資源,最簡單的同步機制是引入互斥鎖。

互斥鎖引入資源狀態:鎖定/非鎖定。

2、實例

"""
Python 互斥鎖解決多線程資源競爭問題
"""
import time
import threading
 
 
# 線程共享變量
g_num = 0
 
# 創建一個互斥鎖
# 默認是未上鎖的狀態
mutex = threading.Lock()
 
 
def work1(num):
    global g_num
    for i in range(num):
        mutex.acquire()  # 上鎖
        g_num += 1
        mutex.release()  # 解鎖
 
    print("---work1---g_num=%d" % g_num)
 
 
def work2(num):
    global g_num
    for i in range(num):
        mutex.acquire()  # 上鎖
        g_num += 1
        mutex.release()  # 解鎖
 
    print("---work2---g_num=%d" % g_num)
 
 
def mutex_test():
    """互斥鎖測試"""
 
    # 創建2個線程,讓他們各自對g_num加1000000次
    count = 1000000
    t1 = threading.Thread(target=work1, args=(count,))
    t1.start()
 
    t2 = threading.Thread(target=work2, args=(count,))
    t2.start()
 
    # 等待計算完成
    # len(threading.enumerate()) = 當前程序線程的數量
    # 為1說明只剩下主線程
    while len(threading.enumerate()) != 1:
        time.sleep(1)
 
    print("2個線程對同一個全局變量操作之后的最終結果是:%s" % g_num)
 
 
def main():
    mutex_test()
 
 
if __name__ == '__main__':
    main()

感謝各位的閱讀!關于“Python互斥鎖怎么解決多線程問題”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

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

AI

定襄县| 洛南县| 和政县| 新昌县| 二连浩特市| 沅陵县| 铜山县| 绿春县| 新余市| 宣威市| 霍邱县| 策勒县| 隆回县| 迭部县| 杭州市| 日照市| 衡阳县| 蒲江县| 于田县| 凌源市| 颍上县| 汝州市| 湖南省| 大丰市| 溧阳市| 安康市| 黔西县| 乐平市| 杭州市| 元江| 铜梁县| 阳信县| 鹿泉市| 易门县| 武陟县| 雅安市| 永嘉县| 陆丰市| 静宁县| 桦甸市| 南靖县|