您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關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互斥鎖怎么解決多線程問題”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。