首先定義乙個thread_test類,寫乙個run方法,首先for迴圈開啟10個執行緒,呼叫start依次執行10個執行緒,呼叫join方法在等待執行緒完全結束後再退出主程式,從結果看並沒有什麼問題。不過當我們在func方法中加入乙個time.sleep函式,可以發現結果變得無序。
這裡就涉及到「鎖」的問題,當多個執行緒同時處理乙個物件時,如果沒有保護好物件,就會出現這種結果。
python為我們提供了threading.lock(),稱之為鎖。我們在程式中加入乙個鎖,當乙個執行緒在處理物件時,將其鎖住,等處理完之後,再將鎖釋放。此時,當多個執行緒同時處理同一物件時,不會發生「執行緒不安全」的現象。
Python學習筆記 多執行緒鎖
多執行緒的鎖 如果有多個執行緒同時操作乙個物件,如果沒有很好地保護該物件,會造成程式結果的不可預期 多執行緒中,所有變數都由所有執行緒共享,所以,任何乙個變數都可以被任何乙個執行緒修改,因此,執行緒之間共享資料最大的危險在於多個執行緒同時改乙個變數,把內容給改亂了。因此需要用鎖threading.l...
python 多執行緒筆記(2) 鎖
鎖是什麼?什麼場合使用鎖?鎖是一種機制,用於保護那些會引起衝突的資源。比如上廁所,進去之後第一件事幹嘛?把廁所門反鎖!表示什麼呢?表示這個廁所正在使用中!至於在廁所裡面幹大事 幹小事 還是 都可以!完事之後幹嘛?把廁所門開啟!表示什麼呢?那誰,你可以進來 了。import threading imp...
python 執行緒鎖
由於執行緒之間隨機排程 某執行緒可能在執行n條後,cpu接著執行其他執行緒。為了多個執行緒同時操作乙個記憶體中的資源時不產生混亂,我們使用鎖。lock 指令鎖 是可用的最低階的同步指令。lock處於鎖定狀態時,不被特定的執行緒擁有。lock包含兩種狀態 鎖定和非鎖定,以及兩個基本的方法。可以認為lo...