多執行緒回顧 執行緒同步RLock,Lock

2021-10-04 06:23:14 字數 1026 閱讀 6780

import threading

from threading import lock,rlock#可重入的鎖

# 全域性直譯器鎖 gil

# 非常影響效能,死鎖(lock不能同時兩個acquire),呼叫使用鎖的其他函式

# rlock 在乙個執行緒中,可以連續多次呼叫acquire,但注意release次數要匹配

## lock = lock()

lock = rlock() # 實際開發中使用次數多

total = 0

# def add():

# global total

# with lock: # 方法1

# for i in range(10000000):

# total +=1

def add():

global total

global lock

for i in range(10000000):

lock.acquire()

lock.acquire()

total +=1

lock.release()

lock.release()

def desc():

global total

global lock

for i in range(10000000):

lock.acquire()

total -= 1

lock.release()

thread1 = threading.thread(target=add)

thread2 = threading.thread(target=desc)

thread1.start()

thread2.start()

thread1.join()

thread2.join()

print(total)

# 167499

# 1518478

執行緒回顧 多執行緒爬蟲

import threading def run a 當前執行緒 c threading.current thread print 子執行緒開始 c.name 建立乙個執行緒 t threading.thread target run,args 1,name haha 啟動執行緒 t.start 關...

多執行緒同步

synchronized 物件 其中物件相當於乙個標誌 鎖 用於判斷 同步 塊 同步的前提必須是兩個或兩個以上的執行緒,且共用同乙個鎖 同步解決了多執行緒的安全問題 弊端 多執行緒需要判斷鎖,消耗了資源 同步函式 將synchronized放在函式名前面即可 即具有同步性質 使用的鎖是this 靜態...

多執行緒同步

同步 即限制某個資源在同一時間只能被同乙個執行緒訪問。執行緒安全問題 多個執行緒共同處理共享資源所導致的。解決 多執行緒處理乙個共享資源時,將處理共享資源的 利用關鍵字synchronized修飾。同步 塊 synchronized修飾 塊,synchronized lock 同步方法 synchr...