您好,登錄后才能下訂單哦!
小編給大家分享一下Python死鎖指的是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
1、云計算,典型應用OpenStack。2、WEB前端開發,眾多大型網站均為Python開發。3.人工智能應用,基于大數據分析和深度學習而發展出來的人工智能本質上已經無法離開python。4、系統運維工程項目,自動化運維的標配就是python+Django/flask。5、金融理財分析,量化交易,金融分析。6、大數據分析。
1、說明
在線共享多個資源時,如果兩個線程分別占用一部分資源,同時等待對方的資源,就會導致死鎖。
雖然死鎖很少發生,但是一旦發生,應用程序就會停止響應。
2、解決方法
程序設計應盡可能避免死鎖(銀行家算法)
增加超時時間等。
3、實例
""" Python 死鎖演示 """ import time import threading mutexA = threading.Lock() mutexB = threading.Lock() class MyThread1(threading.Thread): def run(self): # 對mutexA上鎖 mutexA.acquire() # mutexA上鎖后,延時1秒,等待另外那個線程 把mutexB上鎖 print(self.name+'----do1---up----') time.sleep(1) # 此時會堵塞,因為這個mutexB已經被另外的線程搶先上鎖了 mutexB.acquire() print(self.name+'----do1---down----') mutexB.release() # 對mutexA解鎖 mutexA.release() class MyThread2(threading.Thread): def run(self): # 對mutexB上鎖 mutexB.acquire() # mutexB上鎖后,延時1秒,等待另外那個線程 把mutexA上鎖 print(self.name+'----do2---up----') time.sleep(1) # 此時會堵塞,因為這個mutexA已經被另外的線程搶先上鎖了 mutexA.acquire() print(self.name+'----do2---down----') mutexA.release() # 對mutexB解鎖 mutexB.release() def main(): t1 = MyThread1() t2 = MyThread2() t1.start() t2.start() if __name__ == '__main__': main()
以上是“Python死鎖指的是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。