python中的死锁
在線程間共享多個資源的時候,如果兩個線程分別占有一部分資源并且同時等待對方的資源,就會造成死鎖。
?
盡管死鎖很少發生,但一旦發生就會造成應用的停止響應。下面看一個死鎖的例子
from threading import Thread, Lock
import time
?
mutex1= Lock()? # 創建一個互斥鎖
mutex2= Lock()? # 創建一個互斥鎖
?
?
def fun1():
??? mutex1.acquire()
??? print("線程1 鎖住了mutex1")
??? time.sleep(0.1)
??? mutex2.acquire()
??? print("線程1 鎖住了mutex2")
??? print("線程1 hello")
??? mutex1.release()
??? mutex2.release()
?
?
def fun2():
??? mutex2.acquire()
??? print("線程2 鎖住了mutex2")
??? time.sleep(0.1)
??? mutex1.acquire()
??? print("線程2 鎖住了mutex1")
??? print("線程2 hi")
?
??? mutex1.release()
??? mutex2.release()
?
?
t1 =Thread(target=fun1)? # 創建一個線程對象
t2 =Thread(target=fun2)? # 創建一個線程對象
?
t1.start()? # 開啟線程的執行
t2.start()
?
t1.join()? # 回收線程資源
t2.join()
?
總結
以上是生活随笔為你收集整理的python中的死锁的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中的非阻塞使用互斥锁
- 下一篇: Python编程中一些异常处理的小技巧