如何提高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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何使用 Set 來提高程式碼的效能
- 如何提高 Python 程式碼效率Python
- 如何提高 Ruby On Rails 的效能?AI
- 三種提高Python程式碼效能的簡便方法Python
- Python 系列:如何提高 python 程式程式碼的健壯性Python
- 伺服器的效能如何提高伺服器
- 如何提高 Java 中鎖的效能Java
- 如何提高datapump操作效能
- 如何提高 Ruby On Rails 效能AI
- 如何提高你的 React 應用的效能React
- 如何提高前端效能——字型篇前端
- Go1.13 defer 的效能是如何提高的?Go
- 提高jQuery程式碼效能的幾個方法jQuery
- 提高jquery程式碼效能的幾個措施jQuery
- 提高 Java 程式碼效能的各種技巧Java
- 請教如何提高查詢系統的效能?
- 如何選擇正確的讀取SD的資料表,提高程式效能
- 提高Spring Data JPA應用程式的效能Spring
- 如何提高自學python 效率Python
- 如何提高Linux伺服器效能Linux伺服器
- 提高java程式效能之垃圾收集 (轉)Java
- 雙埠SRAM如何提高系統的整體效能
- 提高sql效能的方法SQL
- JavaScript 中的調節器:提高應用程式的效能JavaScript
- 如何藉助 NoSQL 提高 JPA 應用效能SQL
- 如何提高FPGA敲程式碼的速度?FPGA
- 提高SQL效能SQL
- js程式碼優化 提高執行效能JS優化
- 利用函式的惰性載入提高 javascript 程式碼效能函式JavaScript
- Gbase8d如何提高查詢效能?
- Java效能優化:教你提高程式碼執行的效率Java優化
- Java程式設計提高效能時需注意的地方Java程式設計
- 如何提高程式設計技巧?程式設計
- 提高javascript效能的小細節JavaScript
- 提高網站效能的常用措施網站
- 提高.NET效能的最佳實踐
- 五種提高SQL效能的方法SQL
- 五種提高 SQL 效能的方法SQL