中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

提高python程序性能的方法

發布時間:2020-08-10 14:11:46 來源:億速云 閱讀:257 作者:小新 欄目:編程語言

這篇文章主要介紹了提高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() 調用該  函數進行測試; 如果它是模塊的名稱(表示模塊被調用),則不會執行測試。

感謝你能夠認真閱讀完這篇文章,希望小編分享提高python程序性能的方法內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大城县| 拉萨市| 南郑县| 内丘县| 临城县| 安化县| 宜昌市| 游戏| 平阳县| 宁强县| 靖江市| 金堂县| 太谷县| 冷水江市| 汝州市| 贞丰县| 宕昌县| 东乌珠穆沁旗| 江安县| 平果县| 康定县| 荔波县| 房山区| 阳城县| 策勒县| 洛扎县| 惠州市| 池州市| 太仆寺旗| 中超| 宾阳县| 运城市| 永平县| 宜兴市| 昌江| 荆州市| 稷山县| 定南县| 乳源| 新巴尔虎右旗| 嘉荫县|