1. 程式人生 > 其它 >python死鎖

python死鎖

技術標籤:python基礎

死鎖就是一個執行緒需要的鎖在另外一個執行緒哪裡,而自己手裡拿著他需要的鎖,一次死鎖,程式碼如下:

from threading import Lock,Thread
mutex_a = Lock()
mutex_b = Lock()
class Mythread(Thread):
    def run(self):
        self.fun1()
        self.fun2()
    
    def fun1(self):
        mutex_a.acquire()
        print("get a"
) mutex_b.acquire() print("get b") mutex_b.release() mutex_a.release() def fun2(self): mutex_b.acquire() print("get B") import time time.sleep(2) mutex_a.acquire() print("get A") mutex_a.
release() mutex_b.release() if __name__ == '__main__': for i in range(8): thread_test = Mythread() thread_test.start()

結果如下:
在這裡插入圖片描述

解釋如下
#死鎖產生原因 首先執行緒1 搶到A鎖 其他搶不到等著,接著搶到B鎖 其他任然搶A
#接著釋放B鎖,別的程序任然搶A接著釋放A鎖,別的程序搶到A鎖,執行緒1搶到B鎖,然後睡了2秒
#其他要搶B鎖,B鎖線上程1上,然後執行緒1要搶A鎖,A鎖線上程2上,索要之鎖都在別的執行緒中,所以死鎖