python—多线程数据混乱问题解决之同步锁
生活随笔
收集整理的這篇文章主要介紹了
python—多线程数据混乱问题解决之同步锁
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、同步
問題產生的原因就是沒有控制多個線程對同一資源的訪問,對數據造成破壞,使得線程運行的結果不可預期。這種現象稱為"線程不安全”"。
同步:就是協同步調,按預定的先后次序進行運行。如:你說完,我再說。如進程、線程同步,可理解為進程或線程A和B一塊配合,A執行到一定程度時要依靠B的某個結果,于是停下來,示意B運行;B依言執行,再將結果給A;A再繼續操作。這既是同步,
二、同步鎖
1、lock=Lock():創建同步鎖
2、lock.acquire():獲得這把鎖的鑰匙
3、lock.release():釋放鎖;如果不釋放鎖,其他的線程拿不到鎖,是不會運行的,釋放鎖后其他線程會搶這把鎖。誰先獲得這把鎖呢?不一定
4、加鎖還可以使用with,效果一樣
5、必須使用同一把鎖
執行結果:數據很大,沒有出現數據混亂問題
如果使用鎖,程序會變成串行,因此應該是在適當的地方加鎖;線程調度本質上是不確定的,因此,在多線程程序中錯誤地使用鎖機制可能會導致隨機數據損壞或者其他的異常行為,我們稱之為競爭條件。為了避免競爭條件,最好只在臨界區(對臨界資源進行操作的那部分代碼)使用鎖,
三、線程局部變量不會造成數據混亂問題
執行結果:
總結
以上是生活随笔為你收集整理的python—多线程数据混乱问题解决之同步锁的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python—多线程之共享数据
- 下一篇: python—多线程之死锁