from threading import Thread,Lock
dicts={"a":30}
def gai():
lock=Lock()
lock.acquire()
dicts["a"]=(dicts["a"]-1)
print(dicts["a"])
lock.release()
def gai1():
for i in range(10):
Gai=gai()
def gai2():
for i in range(10):
Gai=gai()
def gai3():
for i in range(10):
Gai=gai()
if __name__ == "__main__":
p1=Thread(target=gai1,args=())
p2=Thread(target=gai2,args=())
p3=Thread(target=gai3,args=())
p1.start()
p2.start()
p3.start()
p1.join()
p2.join()
p3.join()
這個代碼最后的輸出還是資料混亂,是我的上鎖位置不對么
uj5u.com熱心網友回復:
多執行緒顯示混亂很正常,因為是不同執行緒搶資源用的,誰先搶到誰先用,所以沒有順序的。我不知道你說的是那種混亂,但是有2個地方我建議你改改,lock物件建立放在全域,另外dicts最好宣告一下是全域變數轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/63796.html
下一篇:Python語言·求助!!!Python呼叫函式from scipy.misc import imread為何出現報錯
