這篇文章給大家分享的是有關(guān)Python互斥鎖怎么解決多線程問題的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、成都做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、寶山ssl等。為近千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的寶山網(wǎng)站制作公司
1、云計(jì)算,典型應(yīng)用OpenStack。2、WEB前端開發(fā),眾多大型網(wǎng)站均為Python開發(fā)。3.人工智能應(yīng)用,基于大數(shù)據(jù)分析和深度學(xué)習(xí)而發(fā)展出來的人工智能本質(zhì)上已經(jīng)無法離開python。4、系統(tǒng)運(yùn)維工程項(xiàng)目,自動(dòng)化運(yùn)維的標(biāo)配就是python+Django/flask。5、金融理財(cái)分析,量化交易,金融分析。6、大數(shù)據(jù)分析。
1、說明
當(dāng)多個(gè)線程幾乎同時(shí)修改共享數(shù)據(jù)時(shí),需要同步控制。
線程同步可以保證多線程安全訪問競爭資源,最簡單的同步機(jī)制是引入互斥鎖。
互斥鎖引入資源狀態(tài):鎖定/非鎖定。
2、實(shí)例
""" Python 互斥鎖解決多線程資源競爭問題 """ import time import threading # 線程共享變量 g_num = 0 # 創(chuàng)建一個(gè)互斥鎖 # 默認(rèn)是未上鎖的狀態(tài) 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(): """互斥鎖測試""" # 創(chuàng)建2個(gè)線程,讓他們各自對g_num加1000000次 count = 1000000 t1 = threading.Thread(target=work1, args=(count,)) t1.start() t2 = threading.Thread(target=work2, args=(count,)) t2.start() # 等待計(jì)算完成 # len(threading.enumerate()) = 當(dāng)前程序線程的數(shù)量 # 為1說明只剩下主線程 while len(threading.enumerate()) != 1: time.sleep(1) print("2個(gè)線程對同一個(gè)全局變量操作之后的最終結(jié)果是:%s" % g_num) def main(): mutex_test() if __name__ == '__main__': main()
感謝各位的閱讀!關(guān)于“Python互斥鎖怎么解決多線程問題”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!