python避免死鎖方法實例分析
本文實例講述了python避免死鎖方法。分享給大家供大家參考。具體分析如下:
當(dāng)兩個或者更多的線程在等待資源的時候就會產(chǎn)生死鎖,兩個線程相互等待。
在本文實例中 thread1 等待thread2釋放block , thread2等待thtead1釋放ablock,
避免死鎖的原則:
1. 一定要以一個固定的順序來取得鎖,這個列子中,意味著首先要取得alock, 然后再去block
2. 一定要按照與取得鎖相反的順序釋放鎖,這里,應(yīng)該先釋放block,然后是alock
import threading ,time a = 5 alock = threading.Lock() b = 5 block = threading.Lock() def thread1calc(): print "thread1 acquiring lock a" alock.acquire() time.sleep(5) print "thread1 acquiring lock b" block.acquire() a+=5 b+=5 print "thread1 releasing both locks" block.release() alock.release() def thread2calc(): print "thread2 acquiring lock b" block.acquire() time.sleep(5) print "thread2 acquiring lock a" alock.acquire() time.sleep(5) a+=10 b+=10 print "thread2 releasing both locks" block.release() alock.release() t = threading.Thread(target = thread1calc) t.setDaemon(1) t.start() t = threading.Thread(target = thread2calc) t.setDaemon(2) t.start() while 1: time.sleep(300)
輸出:
thread1 acquiring lock a thread2 acquiring lock b thread1 acquiring lock b thread2 acquiring lock a
希望本文所述對大家的Python程序設(shè)計有所幫助。
相關(guān)文章
Python實現(xiàn)查找匹配項作處理后再替換回去的方法
這篇文章主要介紹了Python實現(xiàn)查找匹配項作處理后再替換回去的方法,涉及Python字符串查找、轉(zhuǎn)換、輸出等相關(guān)操作技巧,需要的朋友可以參考下2017-06-06Python基于正則表達(dá)式實現(xiàn)文件內(nèi)容替換的方法
這篇文章主要介紹了Python基于正則表達(dá)式實現(xiàn)文件內(nèi)容替換的方法,涉及Python文件、目錄及字符串正則替換等相關(guān)操作技巧,需要的朋友可以參考下2017-08-08Tensorflow實現(xiàn)在訓(xùn)練好的模型上進(jìn)行測試
今天小編就為大家分享一篇Tensorflow實現(xiàn)在訓(xùn)練好的模型上進(jìn)行測試,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01基于Python實現(xiàn)一個自動關(guān)機程序并打包成exe文件
這篇文章主要介紹了通過Python創(chuàng)建一個可以自動關(guān)機的小程序,并打包成exe文件。文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Python有一定的幫助,感興趣的同學(xué)可以了解一下2021-12-12Java實現(xiàn)的執(zhí)行python腳本工具類示例【使用jython.jar】
這篇文章主要介紹了Java實現(xiàn)的執(zhí)行python腳本工具類,結(jié)合實例形式分析了java使用jython.jar執(zhí)行Python腳本的具體操作技巧,需要的朋友可以參考下2018-03-03Python學(xué)習(xí)筆記之集合的概念和簡單使用示例
這篇文章主要介紹了Python學(xué)習(xí)筆記之集合的概念和簡單使用,涉及Python集合的定義、查找、添加、刪除等相關(guān)操作技巧與注意事項,需要的朋友可以參考下2019-08-08python的tkinter布局之簡單的聊天窗口實現(xiàn)方法
這篇文章主要介紹了python的tkinter布局之簡單的聊天窗口實現(xiàn)方法,對于tkinter用法做了初步的介紹與應(yīng)用展示,需要的朋友可以參考下2014-09-09