import threading
#如果多個執行緒同時訪問同乙個資源,就會造成執行緒得不安全
money = 0
#定義乙個函式用於存錢
def addmoney():
global money
for i in range(1000000):
money+=1
print(money)
#執行緒衝突情況
def conflict():
#有五個執行緒,這五個執行緒同時取用同乙個資源
for _ in range(5):
t = threading.thread(target=addmoney)
t.start()
pass
#執行緒衝突解決方案
#一,執行緒同步
def threadsync():
for _ in range(5):
t = threading.thread(target=addmoney)
t.start()
t.join()#將執行緒加入同步佇列中,同步既是多個執行緒在同步佇列中依次執行,序列
#同步會造成執行緒堵塞
#方案二,給資源加鎖
lock = threading.lock()#互斥鎖
def addmoney2():
global money
print('當前執行緒為',threading.current_thread().name)
# 給公共資源處理過程加鎖
# if lock.acquire():
# for i in range(1000000):
# money+=1
# print(money)
# #釋放
# lock.release()
with lock:
for i in range(1000000):
money+=1
print(money)
print('執行緒',threading.current_thread().name)
def threadlock():
for _ in range(5):
t = threading.thread(target=addmoney2)
t.start()
if __name__ == '__main__':
# conflict()
# threadsync()
threadlock()
Python多執行緒同步
1 實現檔案讀寫的檔案ltz schedule times.py usr bin env python coding utf 8 import os def readtimes res if os.path.exists schedule times.txt fp open schedule tim...
python 多執行緒5執行緒同步
互斥鎖是最簡單的執行緒同步機制,python提供的condition物件提供了對複雜執行緒同步問題的支援。condition被稱為條件變數,除了提供與lock類似的acquire和release方法外,還提供了wait和notify方法。執行緒首先acquire乙個條件變數,然後判斷一些條件。如果條...
Python 多執行緒3 同步執行緒
現在假設這樣乙個例子 有乙個全域性的計數num,每個執行緒獲取這個全域性的計數,根據num進行一些處理,然後將num加1。很容易寫出這樣的 encoding utf 8 import threading import time class mythread threading.thread def ...