Python學習筆記 多執行緒

2021-08-29 07:23:03 字數 970 閱讀 7917

引入多執行緒模組

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...