學會這6招,幫你成倍提升Python執行速度,尤其是最後一大招!

對於Python程式設計,大家想必都或多或少地掌握了不少知識點,

但是Python為人所詬病的一大缺點是其執行速度比較慢

學會這6招,幫你成倍提升Python執行速度,尤其是最後一大招!

其中一大主要的原因是python是動態的,解釋性的語言,而非靜態的語言。而這就意味著python直譯器在執行程式時,並不知道變數的具體型別。

例如C++程式中,int a = 0;那麼在程式的執行過程中,C++直譯器始終知道變數a是一個int型別,而在python中,程式語言變為a = 0。

則python直譯器必須檢查每個變數的PyObject_HEAD屬性才能確定變數型別,例如:

學會這6招,幫你成倍提升Python執行速度,尤其是最後一大招!

所以對於python程式設計的每一步都會有更多的步驟進行支撐,因此python的程式執行都比較慢。

那麼,我們該如何提升我們的python執行速度呢,今天

小編就為大家介紹一下加速python程式的5大方法

。在後面的程式效率對比上,我們以下面的python程式作為基礎對比程式。

學會這6招,幫你成倍提升Python執行速度,尤其是最後一大招!

01.最佳化編寫的程式碼

對於python程式,大家可以首先將程式的目的實現,然後在這個基礎之上,分析程式執行效率低下的部分並實現最佳化,然後不斷的執行這個分析效率-最佳化的步驟。

對於效率低下的操作,可以採用python的內建高階函式等方式進行加速,如下圖所示:

學會這6招,幫你成倍提升Python執行速度,尤其是最後一大招!

上圖程式中,我們分別使用for迴圈函式和python內建高階map函式實現了列表中元素的平方,結果顯示,使用map函式,速度是原先的1。12倍。

02.Cython

Cython的語法同Python的語法類似,cython透過編寫可以被python呼叫的C擴充套件,是其既具備了Python的語法特點,同時又有了像C語言一樣的程式執行速度,此外,Cython還可以方便的呼叫C的包。

下圖給出的程式,展示的是利用cython進行開發時在執行速度上相較於python的提升。

學會這6招,幫你成倍提升Python執行速度,尤其是最後一大招!

上圖可以看出,透過cython,雖然程式上沒有區別,但是在執行速度上cython提升了1。5倍左右。

03.使用多執行緒

在程序執行當中,可以有多個執行緒同時進行執行,但是每個執行緒可以執行不同的任務,對於多執行緒,這裡不做過多的解釋,我們直接用一個簡單的程式來展示多執行緒。

學會這6招,幫你成倍提升Python執行速度,尤其是最後一大招!

上述的程式中,我們使用多執行緒來實現我們的Pow_2函式,可以看到多執行緒同樣起到了加速python程式執行。

這裡還需注意一點是我們使用多執行緒往一個公共的pow_list中新增資料,由於這是我們期望的,所以不需要新增執行緒鎖來進行保護。

04.使用numba庫

對於numba,官網對它本身的定義為“python的直譯器”。對於numba庫的詳盡解釋,這裡小編給大家一個紐約大學的網站,大家可以透過這個網站的講解,對numba有更加全面的瞭解。

https://nyu-cds。github。io/python-numba/

對於numba庫的簡單方法,最簡單的是在函式定義的前面加上@jit裝飾器

學會這6招,幫你成倍提升Python執行速度,尤其是最後一大招!

上述程式中,我們在Pow_2函式前加上了jit裝飾器,執行結果顯示,其執行速度是基礎方法的2。34倍左右,大大的縮短了程式的執行時間。

05.使用多程序

對於python的多程序,python內建了多程序包multiprocessing,我們只需要定義一個函式,便可以藉助multiprocessing包,輕鬆的實現從單程序到併發執行的轉換。

學會這6招,幫你成倍提升Python執行速度,尤其是最後一大招!

上述程式中,我們建立了4個程序,並實現了將陣列元素進行平方的功能,從結果可以看出,多程序實現了真正的並行,使得程式的執行時間大大縮短,執行速度達到了基礎程式的3。05倍。

06.儘可能使用numpy、pandas等科學計算庫

使用科學計算庫不僅可以幫助我們簡化程式碼,提升程式碼可讀性,而且其高效的資料處理效率可以大大提升我們的程式執行速度。

學會這6招,幫你成倍提升Python執行速度,尤其是最後一大招!

上圖中,我們使用numpy來完成相同的效果,即對列表中的每個元素都實行平方。這裡我們先將原始的列表origin_list轉化numpy的陣列,然後直接對陣列進行平方。

注意這樣的操作對於列表物件來說是不合法的

。從上面的程式來看,使用

numpy既大大簡化了程式,而且也大大地提升了程式的執行效率,提高了65倍,對於資料處理來說,是非常友好的

總結

上述的6個python執行效率提升的方法中,既有從程式本身入手進行提升,也有利用程序、執行緒技術和python+C的方法進行實現。

大家可以在以後的程式編寫中,在需要提升執行效率的時候,參考這幾種方式,提升自己python程式的執行效率。

以上是今天的全部內容分享,如果對你有幫助,歡迎

點贊+關注

哦!

相關文章