python語言的提高

一、GIL(全局解釋器鎖)的問題:

1.什麼是GIL:

(1).Python語言和GIL沒有半毛錢關係。僅僅是由於歷史原因在Cpython虛擬機(解釋器),難以移除GIL。
(2).GIL:全局解釋器鎖。每個線程在執行的過程都需要先獲取GIL,保證同一時刻只有一個線程可以執行代碼。
(3).線程釋放GIL鎖的情況: 在IO操作等可能會引起阻塞的system call之前,可以暫時釋放GIL,但在執行完畢後,必須重新獲取GIL Python 3.x使用計時器(執行時間達到閾值後,當前線程釋放GIL)或Python 2.x,tickets計數達到100
(4).Python使用多進程是可以利用多核的CPU資源的。

(5).多線程爬取比單線程性能有提升,因爲遇到IO阻塞會自動釋放GIL鎖

2.怎樣解決GIL問題:

(1).重新設計一個不帶GIL的解釋器

(2).使用進程來完成多任務

(3).通過C語言的擴展,C語言裏的解釋器沒有問題,可以調用C的解釋器來處理多線程

二、面向對象的三大特徵是什麼?

封裝、繼承、多態。

1.封裝的概念及特點?

封裝:顧名思義就是將內容封裝到某個地方,以後再去調用被封裝在某處的內容。 對於面向對象的封裝來說,其實就是使用構造方法將內容封裝到 對象 中,然後通過對象直接或者self間接獲取被封裝的內容。

封裝成類的好處:一個是保護隱私,一個是降低程序複雜度,使代碼劃分更清晰,不需要重複造輪子,封裝好了可以直接使用,而不需要重複編寫

2.繼承的好處:

(1)能夠提升代碼的重用率,即開發一個類,可以在多個子功能中直接使用

(2)繼承能夠有效的進行代碼的管理,當某個類有問題只要修改這個類就行,而其繼承這個類的子類往往不需要就修改

3.多態的特點:

在對象中,一個相同的方法,由於對象的不同,可以得到不同的結果。提升代碼的重用率。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章