python_多線程加鎖


 

python3多線程可以不加鎖,每個多線程就自帶鎖

python2多線程必須加鎖,多線程本身不帶鎖

 

加鎖有兩種方式,一種如下圖: 

import time, threading
count=0 #聲明全局變量
lock=threading.Lock() #申請一把鎖
def lajifenlei():
    global count #引用全局變量
    lock.acquire()  #加鎖
    count+=1
    lock.release() #釋放鎖
    time.sleep(1)
    print(count)

for i in range(10):
    th = threading.Thread(target=lajifenlei,) #聲明線程數
    th.start() #啟動線程
while threading.activeCount()!=1:
    pass

C:\Users\zhaow\AppData\Local\Programs\Python\Python37\python.exe D:/study/python/atp/lib/t.py
10
1010
101010
10

10

1010

另一種類似打開和關閉文件的with方法,自動開關鎖

import time, threading
count=0 #聲明全局變量
lock=threading.Lock() #申請一把鎖
def lajifenlei():
    global count #引用全局變量

    with lock: #with模塊自動加鎖及解鎖
     count+=1

    time.sleep(1)
    print(count)

for i in range(10):
    th = threading.Thread(target=lajifenlei,) #聲明線程數
    th.start() #啟動線程
while threading.activeCount()!=1:
    pass

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM