09.07 提高Python程序執行性能的7個習慣

“人生苦短,我用Python”,這句話很精髓地體現了Python這門編程語言的特點,就是開發高效。Python的語法表現力很強、很靈活,同時擁有大量優秀的第三方庫。

提高Python程序執行性能的7個習慣

python

不過任何事物都不可能是完美的,很多人詬病Python的執行性能低,沒有C、Java等語句強。

提高Python程序執行性能的7個習慣

其實關於這個問題,我個人認為大可不必過於糾結,沒有完美的工具,只有適合的場景。所以,選擇一門語句時,要看是用於什麼地方。大多數情況下,Python還是非常適合的。

但不同的編碼習慣,還是會影響Python的執行效率的,CPU的執行和內存的佔用。總結了7個日常的習慣,可以提高Python程序執行性能。

1 使用局部變量

儘量使用局部變量替代全局變量,這樣利於提升性能和節約內存。

例如:

ls = os.linesep

原因:

  • 搜索本地變量速度更快
  • 使用短的命名替代長的模塊命名,更便於閱讀

2 減少一些函數的調用

  • 判斷對象類型時,最好使用isinstance(),而不是type(),這樣性能更好。
  • 在一個循環裡不要重複執行一個判斷條件函數,例如:
while i < len(a):
\t\tpass

# len()浪費不必的CPU計算資源
  • 使用from X import Y,替代import X; X.Y,可以減少查找模塊次數。

3 使用映射替代條件判斷

映射的查找速度是遠高於條件語句的,例如:

# 判斷的方式
if a == 1:
\t\tb == 10
elif a == 2:
\t\tb == 20

# 映射的方式
d = {1: 10, 2: 20}
b = d[a]

4 直接迭代序列的元素

序列類型包括:str、list、tuple,直接迭代序列元素幣迭代元素索引更快。

a = [1, 2, 3]

# 直接迭代的方式
for item in a:

print item

# 通過索引的方式
for i in range(len(a)):
print a[i]

5 生成器替代列表推導

列表推導會產生一個空的list,而生成器是延時產生數據的,對內存更友好。

# 列表推導
l = sum([len(word) for line in f for word in line.split()])

# 生成器
l = sum(len(word) for line in f for word in line.split())

6 先編譯後執行

如果需要eval()和exec()執行code,最好先編譯成bytecode,所以使用compile()編譯替代str。

其中正則表達式也先編譯,再匹配,例如:

re.complie()

7 模塊程序運行習慣

在模塊裡要執行一些測試的時候,要註明主函數,如:

def main():
pass
if __name__ == '__main__':
main()

這樣避免引用時,導致不必要的執行。

提高Python程序執行性能的7個習慣

以上內容希望對大家有所幫助,如果大家有什麼想法,歡迎留言,一同交流!

一個10年互聯網老兵,聊聊互聯網、區塊鏈,分享經驗和心得,歡迎大家關注我,非常感謝!


分享到:


相關文章: