小編給大家分享一下Python死鎖指的是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)專(zhuān)業(yè)為企業(yè)提供鎮(zhèn)康網(wǎng)站建設(shè)、鎮(zhèn)康做網(wǎng)站、鎮(zhèn)康網(wǎng)站設(shè)計(jì)、鎮(zhèn)康網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、鎮(zhèn)康企業(yè)網(wǎng)站模板建站服務(wù),十載鎮(zhèn)康做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
1、云計(jì)算,典型應(yīng)用OpenStack。2、WEB前端開(kāi)發(fā),眾多大型網(wǎng)站均為Python開(kāi)發(fā)。3.人工智能應(yīng)用,基于大數(shù)據(jù)分析和深度學(xué)習(xí)而發(fā)展出來(lái)的人工智能本質(zhì)上已經(jīng)無(wú)法離開(kāi)python。4、系統(tǒng)運(yùn)維工程項(xiàng)目,自動(dòng)化運(yùn)維的標(biāo)配就是python+Django/flask。5、金融理財(cái)分析,量化交易,金融分析。6、大數(shù)據(jù)分析。
1、說(shuō)明
在線(xiàn)共享多個(gè)資源時(shí),如果兩個(gè)線(xiàn)程分別占用一部分資源,同時(shí)等待對(duì)方的資源,就會(huì)導(dǎo)致死鎖。
雖然死鎖很少發(fā)生,但是一旦發(fā)生,應(yīng)用程序就會(huì)停止響應(yīng)。
2、解決方法
程序設(shè)計(jì)應(yīng)盡可能避免死鎖(銀行家算法)
增加超時(shí)時(shí)間等。
3、實(shí)例
""" Python 死鎖演示 """ import time import threading mutexA = threading.Lock() mutexB = threading.Lock() class MyThread1(threading.Thread): def run(self): # 對(duì)mutexA上鎖 mutexA.acquire() # mutexA上鎖后,延時(shí)1秒,等待另外那個(gè)線(xiàn)程 把mutexB上鎖 print(self.name+'----do1---up----') time.sleep(1) # 此時(shí)會(huì)堵塞,因?yàn)檫@個(gè)mutexB已經(jīng)被另外的線(xiàn)程搶先上鎖了 mutexB.acquire() print(self.name+'----do1---down----') mutexB.release() # 對(duì)mutexA解鎖 mutexA.release() class MyThread2(threading.Thread): def run(self): # 對(duì)mutexB上鎖 mutexB.acquire() # mutexB上鎖后,延時(shí)1秒,等待另外那個(gè)線(xiàn)程 把mutexA上鎖 print(self.name+'----do2---up----') time.sleep(1) # 此時(shí)會(huì)堵塞,因?yàn)檫@個(gè)mutexA已經(jīng)被另外的線(xiàn)程搶先上鎖了 mutexA.acquire() print(self.name+'----do2---down----') mutexA.release() # 對(duì)mutexB解鎖 mutexB.release() def main(): t1 = MyThread1() t2 = MyThread2() t1.start() t2.start() if __name__ == '__main__': main()
以上是“Python死鎖指的是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!