如何提高python程式的效能
Python在效能方面並不擅長,但透過一些提示,您可以嘗試提高程式效能並避免不必要的資源浪費。
1.使用區域性變數
嘗試使用區域性變數而不是全域性變數使其易於維護,有助於提高效能並節省記憶體。
使用區域性變數替換模組名稱空間中的變數,例如ls = os.linesep。一方面,它可以提高程式效能,因為區域性變數的搜尋速度更快; 另一方面,冗長的模組變數可以用短識別符號替換,以提高可讀性。
2.減少函式呼叫的次數
在確定物件型別時,最佳使用isinstance(),次優使用id(),最差type()用於比較。
#Determine whether the variable num is an integer type type(num) == type(0) #call the function three times type(num) is type(0) #identity comparison isinstance(num,(int)) #call the function once
不要將重複操作作為引數放在迴圈中,以避免重複計算。
#Each loop needs to re-execute len(a) while i < len(a): statement #Only execute len(a) once m = len(a) while i < m: statement
要Y在模組中使用函式或物件X,您應該from X import Y直接使用 而不是 import X; X.Y。因此,在使用時Y,您可以減少一次查詢(直譯器不必先找到X模組,然後Y在X模組的字典中查詢)。
3.使用對映替換條件搜尋
對映的搜尋速度(例如dict等)比條件語句(例如if等)快得多。select-casePython中沒有宣告。
#if? reach if a == 1: b = 10 elif a == 2: b = 20 ... #dict reach,better performance d = {1:10,2:20,...} b = d[a]
4.直接迭代序列元素
對於序列(str,list,tuple等),迭代序列元件直接比迭代元件索引更快。
a = [1,2,3] #Iterate elements for item in a: print(item) #Iterate indexes for i in range(len(a)): print(a[i])
5.用生成器表示式替換列表解析
列表理解將產生整個列表,對大量資料的迭代產生負面影響。
但是生成器表示式沒有。它實際上並不建立一個列表,而是返回一個生成器,它在需要時產生一個值(延遲),這對記憶體更友好。
#Calculate the number of non-null characters in file f #List analysis l = sum([len(word) for line in f for word in line.split()]) #generator expression l = sum(len(word) for line in f for word in line.split())
6.首先編譯然後呼叫
當使用該函式 eval() 並 exec() 執行程式碼時,最好呼叫程式碼物件(透過compile() 函式預先編譯成位元組碼 )而不是str 直接呼叫 ,這樣可以避免多次重複編譯過程並提高程式的效能。
正規表示式模式匹配是類似的。re.complie() 在執行比較和匹配之前,最好將正規表示式模式編譯為正規表示式物件(透過 函式)。
7.模組程式設計的習慣
模組中最高階別的Python語句(無縮排程式碼)將在匯入模組時執行(是否真的需要執行)。因此,您應該嘗試將模組的所有功能程式碼放入函式中(與主程式相關的功能程式碼也可以放入 main() 函式中,主程式本身呼叫該 main() 函式)。
測試程式碼可以main() 在模組的功能中編寫 。__name__ 將在主程式中檢測到該值 。如果是' __main__'(表示模組是直接執行的),則main() 呼叫該 函式進行測試; 如果它是模組的名稱(表示模組被呼叫),則不會執行測試。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4687/viewspace-2836746/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 三種提高Python程式碼效能的簡便方法Python
- 如何使用 Set 來提高程式碼的效能
- Python 系列:如何提高 python 程式程式碼的健壯性Python
- 如何提高 Locust 的壓測效能
- 伺服器的效能如何提高伺服器
- 如何提高你的 React 應用的效能React
- 如何提高前端效能——字型篇前端
- 提高Spring Data JPA應用程式的效能Spring
- Go1.13 defer 的效能是如何提高的?Go
- 如何提高Linux伺服器效能Linux伺服器
- 如何選擇正確的讀取SD的資料表,提高程式效能
- JavaScript 中的調節器:提高應用程式的效能JavaScript
- 雙埠SRAM如何提高系統的整體效能
- js程式碼優化 提高執行效能JS優化
- Gbase8d如何提高查詢效能?
- 怎樣提高insert的效能
- Java效能優化:教你提高程式碼執行的效率Java優化
- Python 程式碼的效能優化之道Python優化
- 提升Python程式效能的小習慣!Python
- 如何最佳化程式的效能
- 如何提高小程式的使用者體驗?
- 如何提高程式碼的可維護性
- 如何提高程式碼的可測試性
- 我是如何提高自己的「程式設計能力」的?程式設計
- 如何提高Java程式碼質量-優雅的寫程式碼Java
- C#中透過ObjectPool重用物件提高程式效能C#Object物件
- sync.Pool:提高Go語言程式效能的關鍵一步Go
- 提高 PostgreSQL 插入效能的 5 個技巧SQL
- GameMode:提高 Linux 遊戲效能的工具GAMLinux遊戲
- 怎樣提高伺服器的效能伺服器
- 如何優化程式效能優化
- 低程式碼平臺是如何提高成本效益的
- java中如何將巢狀迴圈效能提高500倍Java巢狀
- Python使用多程式提高網路爬蟲的爬取速度Python爬蟲
- 提高API效能的幾個綜合策略API
- 提高JS原生方法效能的JS庫 -- loadashJS
- 如何分析和提高(C/C++)程式的編譯速度?C++編譯
- 透過 CancellationToken 提高 Web 效能Web