1. 程式人生 > >33 執行緒的建立 驗證執行緒之間資料共享 守護執行緒

33 執行緒的建立 驗證執行緒之間資料共享 守護執行緒

今日內容

執行緒理論

什麼是執行緒

執行緒的兩種建立方式(重點)

檢視執行緒的pid

計算密集型和io密集型

 

執行緒與程序的效率對比

執行緒空間不是隔離的

守護執行緒(**)

鎖(重點)

死鎖現象(重點)

遞迴鎖(重點)

以後用遞迴鎖

子程序不能input

執行緒不需要main

GIL鎖(重點)

 

今日內容回顧:

執行緒的兩種建立方式:(重點)

一\

From threading import Thread

Def f1(n):

Print(n)

main

T = Thread(target=f1,args=(1,))

T.start()

 

二\

Class MyThread(Thread):

Def __init__(self,n):

Super().__init__()

Self.n = n

Def run(self):

Pass

Main

T = MyThread(5)

T.start()

程序:資源分配單位

執行緒:cpu執行單位(實體)

 

執行緒的建立和銷燬的開銷特別小

 

執行緒之間資源共享,共享的是同一個程序中的資源

 

資源共享就涉及到資料安全問題,加鎖來解決

From threading import Thread,Lock

 

Loc = Lock()

T = thread(target=f1,args=(loc,))

 

Loc.acquire()

程式碼

Loc.release()

鎖:犧牲了效率,保證了資料安全(重點)

 

死鎖現象:出現在鎖巢狀的時候,雙方互相搶對方已經拿到的鎖,導致雙方互相等待,天長地久永不分離,死鎖現象(重點)

 

 

遞迴鎖:解決死鎖現象(重點)

Rlock  首先本身就是個互斥鎖,維護了一個計數器,每次acquire就+1,release就-1,當計數器為0的時候,大家才能搶這個鎖

 

守護執行緒(**)

守護執行緒:等待所有非守護執行緒的結束才結束

守護程序:主程序程式碼執行結束,守護程序就隨之結束

GIL鎖(重點) : cpython直譯器上的一把互斥鎖

 

訊號量,事件 瞭解

 

01 執行緒的兩種建立方式

02 檢視執行緒的程序id

03 驗證執行緒是資料共享的

04 多程序和多執行緒的效率對比

05 鎖 同步 互斥鎖

06 死鎖現象

07 遞迴鎖

08 多執行緒的程式不結束多程序的程式不結束的區別

08 守護執行緒

10 gil解釋

11 gil解釋

12 子程序不能input

13 事件