學會這6招,幫你成倍提升Python執行速度,尤其是最後一大招!
對於Python程式設計,大家想必都或多或少地掌握了不少知識點,
但是Python為人所詬病的一大缺點是其執行速度比較慢
。
其中一大主要的原因是python是動態的,解釋性的語言,而非靜態的語言。而這就意味著python直譯器在執行程式時,並不知道變數的具體型別。
例如C++程式中,int a = 0;那麼在程式的執行過程中,C++直譯器始終知道變數a是一個int型別,而在python中,程式語言變為a = 0。
則python直譯器必須檢查每個變數的PyObject_HEAD屬性才能確定變數型別,例如:
所以對於python程式設計的每一步都會有更多的步驟進行支撐,因此python的程式執行都比較慢。
那麼,我們該如何提升我們的python執行速度呢,今天
小編就為大家介紹一下加速python程式的5大方法
。在後面的程式效率對比上,我們以下面的python程式作為基礎對比程式。
01.最佳化編寫的程式碼
對於python程式,大家可以首先將程式的目的實現,然後在這個基礎之上,分析程式執行效率低下的部分並實現最佳化,然後不斷的執行這個分析效率-最佳化的步驟。
對於效率低下的操作,可以採用python的內建高階函式等方式進行加速,如下圖所示:
上圖程式中,我們分別使用for迴圈函式和python內建高階map函式實現了列表中元素的平方,結果顯示,使用map函式,速度是原先的1。12倍。
02.Cython
Cython的語法同Python的語法類似,cython透過編寫可以被python呼叫的C擴充套件,是其既具備了Python的語法特點,同時又有了像C語言一樣的程式執行速度,此外,Cython還可以方便的呼叫C的包。
下圖給出的程式,展示的是利用cython進行開發時在執行速度上相較於python的提升。
上圖可以看出,透過cython,雖然程式上沒有區別,但是在執行速度上cython提升了1。5倍左右。
03.使用多執行緒
在程序執行當中,可以有多個執行緒同時進行執行,但是每個執行緒可以執行不同的任務,對於多執行緒,這裡不做過多的解釋,我們直接用一個簡單的程式來展示多執行緒。
上述的程式中,我們使用多執行緒來實現我們的Pow_2函式,可以看到多執行緒同樣起到了加速python程式執行。
這裡還需注意一點是我們使用多執行緒往一個公共的pow_list中新增資料,由於這是我們期望的,所以不需要新增執行緒鎖來進行保護。
04.使用numba庫
對於numba,官網對它本身的定義為“python的直譯器”。對於numba庫的詳盡解釋,這裡小編給大家一個紐約大學的網站,大家可以透過這個網站的講解,對numba有更加全面的瞭解。
https://nyu-cds。github。io/python-numba/
對於numba庫的簡單方法,最簡單的是在函式定義的前面加上@jit裝飾器
。
上述程式中,我們在Pow_2函式前加上了jit裝飾器,執行結果顯示,其執行速度是基礎方法的2。34倍左右,大大的縮短了程式的執行時間。
05.使用多程序
對於python的多程序,python內建了多程序包multiprocessing,我們只需要定義一個函式,便可以藉助multiprocessing包,輕鬆的實現從單程序到併發執行的轉換。
上述程式中,我們建立了4個程序,並實現了將陣列元素進行平方的功能,從結果可以看出,多程序實現了真正的並行,使得程式的執行時間大大縮短,執行速度達到了基礎程式的3。05倍。
06.儘可能使用numpy、pandas等科學計算庫
使用科學計算庫不僅可以幫助我們簡化程式碼,提升程式碼可讀性,而且其高效的資料處理效率可以大大提升我們的程式執行速度。
上圖中,我們使用numpy來完成相同的效果,即對列表中的每個元素都實行平方。這裡我們先將原始的列表origin_list轉化numpy的陣列,然後直接對陣列進行平方。
注意這樣的操作對於列表物件來說是不合法的
。從上面的程式來看,使用
numpy既大大簡化了程式,而且也大大地提升了程式的執行效率,提高了65倍,對於資料處理來說,是非常友好的
。
總結
上述的6個python執行效率提升的方法中,既有從程式本身入手進行提升,也有利用程序、執行緒技術和python+C的方法進行實現。
大家可以在以後的程式編寫中,在需要提升執行效率的時候,參考這幾種方式,提升自己python程式的執行效率。
以上是今天的全部內容分享,如果對你有幫助,歡迎
點贊+關注
哦!
相關文章
- 2021-09-15我Giao!超級適合動手操作的70個Python專案,簡單易上手(愛了)
- 2021-09-11Flink 1.14 新特性預覽
- 2021-09-08華為大佬整理的Python漫畫教程,圖文生動有趣,讓人一目瞭然!
- 2021-07-272年5款新車!大號“理想ONE”明年亮相 純電車型後年上市
- 2021-06-15中科院用58小時講完的python! 整整666集, 拿走不謝