day 33 什麼是執行緒? 兩種建立方式. 守護執行緒. 鎖. 死鎖現象. 遞迴鎖. GIL鎖
阿新 • • 發佈:2019-01-14
一.執行緒
1.程序:資源的分配單位
執行緒:cpu執行單位(實體)
2.執行緒的建立和銷燬開銷特別小
3.執行緒之間資源共享,共享的是同一個程序中的資源
4.執行緒之間不是隔離的
5.執行緒可不需要 main
二.執行緒的建立方式
From threading import Thread
第一種
第二種
三.守護執行緒
1.守護執行緒:等待所有非守護執行緒的結束才結束
2.守護程序:主程式程式碼執行結束,守護程序就隨之結束
注:
1.主程序在其程式碼結束後就已經算執行完畢了(守護程序在此時就被回收),
然後主程序會一直等非守護的子程序都執行完畢後
回收子程序的資源(否則會產生殭屍程序),才會結束,
2.
主執行緒在其他非守護執行緒執行完畢後才算執行完畢(守護執行緒在此時就被回收)。
因為主執行緒的結束意味著程序的結束,程序整體的資源都將被回收,
而程序必須保證非守護執行緒都執行完畢後才能結束,
因為程序執行結束是要回收資源的,
所有必須確保你裡面的非守護子執行緒全部執行完畢。
四、計算密集型和io密集型
io密集型時 執行緒效率高
計算密集型 程序效率高
五。鎖
1.犧牲效率,保證資料安全
2.死鎖現象
出現在鎖巢狀的時候,雙方互相搶對方已經拿到的鎖,
導致雙方互相等待,
3.遞迴鎖(解決死鎖現象)
Rlock 首先本身就是個互斥鎖,維護了一個計數器,
每次acquire就+1,release就-1,當計數器為0的時候,大家才能搶這個鎖
4. gil鎖 :cpython直譯器上的一把互斥鎖
六.訊號量,事件(同進程一樣)