python死鎖的產生原因
python死鎖的產生原因
1、程序永遠無法運行結束,根本原因在于:
一個線程持有鎖1同時在請求鎖2,另一個線程持有鎖2同時在請求鎖1,二者不得到對方的鎖都不會放開自己的鎖,程序就這樣僵持下去了。
2、實例
兩個線程會同時開啟,程序打印出
print1firstThread-1
print1secondThread-1
print2firstThread-1
print1firstThread-2
(1)第一個線程先執行print1,獲得了鎖1,等待1秒。這時第二個線程已經開啟,企圖獲得鎖1,但是獲取不到于是等待
(2)第一個線程等待時間結束,獲得鎖2,打印結束釋放兩把鎖。之后馬上開始執行print2,并獲得鎖2,等待1秒
(3)這時第二個線程可以獲得鎖1了,開始執行print1,也等待1秒
(4)等待時間結束,第一個線程持有鎖2企圖獲得鎖1,第一個線程持有鎖1企圖獲得鎖2,就陷入了僵局
以上就是Python死鎖的產生原因,希望對大家有所幫助。更多Python學習推薦:請關注IT培訓機構:千鋒教育。

相關推薦HOT
更多>>
pythonfor循環是什么
pythonfor循環是什么在做遍歷的時候,對于一些數據的反復循環執行,我們會用到for循環的語句。可以說這是新手入門必學的語句之一,在很多基礎循...詳情>>
2023-11-13 07:46:36
pythoncontextmanager()的轉換
python中contextmanager()的轉換1、說明當發出請求時,requests庫會在將請求實際發送到目標服務器之前準備該請求。請求準備包括像驗證頭信息和...詳情>>
2023-11-13 06:34:35
python使用items()遍歷鍵值對
python使用items()遍歷鍵值對字典可以用來存儲各種方式的信息,所以有很多方式可以通過字典的所有鍵值對、鍵或值。說明1、即使通過字典,鍵值對...詳情>>
2023-11-13 04:24:15
python實例方法中self的作用
python實例方法中self的作用說明1、無論是創建類的構造方法還是實例方法,最少要包含一個參數self。2、通過實例的self參數與對象進行綁定,程序...詳情>>
2023-11-13 03:46:48