多線程 -- 同步鎖
阿新 • • 發佈:2018-08-30
release brush wid 共享變量 height rt thread width 圖片 target
- 多個線程同時操作一個變量
import time import threading def addNum(): #在每個線程中都獲取這個全局變量 global num temp = num time.sleep(0.1) #對此公共變量進行-1操作 num = temp-1 #設定一個共享變量 num = 100 thread_list = [] for i in range(100): t = threading.Thread(target=addNum) t.start() thread_list.append(t) #等待所有線程執行完畢 for t in thread_list: t.join() print(‘final num:‘, num ) 輸出: 99
- 同步鎖,acquire和release之間的代碼,在同一時間只會被一個線程執行
import time import threading def addNum(): global num lock.acquire() temp = num time.sleep(0.1) num = temp-1 lock.release() num = 100 thread_list = [] lock = threading.Lock() for i in range(100): t = threading.Thread(target=addNum) t.start() thread_list.append(t) for t in thread_list: t.join() print(‘final num:‘, num ) 輸出: 0
多線程 -- 同步鎖