引入多執行緒模組
import threading
任何乙個程序啟動的時候會預設的啟動乙個執行緒,這個執行緒叫主線程,主線程可以啟動新的子執行緒
獲取主當前執行緒的名稱
threading.current_thread().name
建立子執行緒
t=threading.thread(target=fun,args=(引數1,引數2))
每個程序結束,都會結束當前執行緒。所以每個主線程都應該等到子程序結束主線程才能結束。
多執行緒共享資料?
多執行緒和多程序最大的不同在於,多程序中,同乙個變數,各自有乙份拷貝存在程序中,互不影響,而多執行緒中,所有變數都由所有執行緒共享,所以,任何乙個變數都可以被任意乙個執行緒修改,因此,執行緒之間共享資料最大的危險在於多個執行緒同時修改乙個變數,容易把內容改亂。
執行緒鎖解決資料混亂?
優點:執行緒鎖保證了資料的準確性
缺點:阻止了併發執行,包含鎖的某段**實際上是單執行緒模式執行,所以效率降低了!
由於可以存在多個鎖,不同執行緒持有不同的鎖,其他執行緒並試圖獲取其他的鎖,可能造成死鎖,導致多個執行緒掛起。
建立執行緒鎖物件
lock = threading.lock()
開始給執行緒上鎖
lock.acquire()
開始給執行緒釋放鎖(解鎖)
lock.release()
每個執行緒對threadlocal物件都可以讀寫,但是互不影響
local=threading.local()
#排程執行緒?
排程執行緒是給執行緒執行的時候設定乙個先後的順序來的。
因為多執行緒執行是沒有順序的,如果想要讓現場順序執行,那麼就要排程執行緒
引入排程執行緒
建立condition
cond=threading.condition()
等待訊號
cond.wait()
釋放訊號
cond.notify()
Python學習筆記 多執行緒
簡單的多執行緒 import threading import time def run n print task n time.sleep 2 t1 threading.thread target run,args t1 t2 threading.thread target run,args t2...
python學習筆記 多執行緒
電腦同時執行有多個軟體,每乙個執行的軟體程式都是乙個程序。每乙個應用程式內,有多段程式同時執行,每一段程式就是乙個執行緒。python3 執行緒中常用的兩個模組為 thread 模組已被廢棄。使用者可以使用 threading 模組代替。所以,在 python3 中不能再使用 thread 模組。為...
Python學習筆記 多執行緒鎖
多執行緒的鎖 如果有多個執行緒同時操作乙個物件,如果沒有很好地保護該物件,會造成程式結果的不可預期 多執行緒中,所有變數都由所有執行緒共享,所以,任何乙個變數都可以被任何乙個執行緒修改,因此,執行緒之間共享資料最大的危險在於多個執行緒同時改乙個變數,把內容給改亂了。因此需要用鎖threading.l...