1. 程式人生 > >python高階程式設計上— GIL全域性直譯器和深淺拷貝

python高階程式設計上— GIL全域性直譯器和深淺拷貝

①GIL:全域性直譯器鎖
1):python直譯器分為兩種,一種是C-pytohn ,另一種是JAVA-python
2):python語言和GIL沒有關係。GIL的造成是由於使用C-python直譯器造成的。由於90年代電腦沒有並行的多核電腦,因此C-python直譯器沒有考慮多執行緒的問題。
3):C-python直譯器在執行執行緒時必須先執行GIL鎖,保證同一時刻只有一個執行緒可以執行程式碼
4):C-python直譯器可以利用多程序佔用多核CPU資源
5):JAVA-python直譯器使用多執行緒要比多程序的效率高,原因是佔用的資源較少。
6):多執行緒比單執行緒效能高,原因是遇到IO阻塞會自動釋放GIL鎖
7): IO密集型的計算:可以使用多執行緒和多協程
計算密集型的計算:使用多程序

②深拷貝與淺拷貝
1)引用: a = 10 b = a 這裡a指向10的地址,b指向了a的地址
2)淺拷貝: 只拷貝最頂層一層的資料
3)深拷貝: 拷貝所有層資料(遞迴拷貝)
在這裡插入圖片描述
在這裡插入圖片描述
[注1]使用淺拷貝時,只要拷貝層有不可變型別,則直接引用
使用深拷貝時,當所有資料都是不可變型別,直接引用
只要含有一個可變資料型別,則進行深拷貝.
[注2] a=[11,22] 切片d = a[:] 和 d = copy.copy(a)完全相同都是淺拷貝
當我們使用資料進行測試時可以在函式引數中傳入拷貝的資料
在這裡插入圖片描述