首頁 後端開發 Python教學 如何對Python進行效能最佳化

如何對Python進行效能最佳化

Jun 28, 2017 pm 01:33 PM
python 最佳化 效能

Python的批評者聲稱Python性能低效、執行緩慢,但實際上並非如此:嘗試以下6個小技巧,可以加快Pytho應用程式。

Python是一門非常酷的語言,因為很少的Python程式碼可以在短時間內做很多事情,而且,Python很容易就能支援多工和多重處理。

py

  1、關鍵程式碼可以依賴擴充包

Python使許多程式設計任務變得簡單,但是對於很關鍵的任務並不總是提供最好的效能。使用C、C++或機器語言擴充包來執行關鍵任務能極大改善效能。這些套件是依賴平台的,也就是說,你必須使用特定的、與你使用的平台相關的套件。簡而言之,該解決方案提供了一些應用程式的可移植性,以換取性能,您可以獲得只有透過直接向底層主機編程。下面這些擴充包你可以考慮加入到你的個人擴充庫:

Cython
PyInlne
PyPy
Pyrex

這些套件有不同的作用和執行方式。例如,Pyrex 讓Python處理一些記憶體任務變得簡單有效率;PyInline可以直接讓你在Python應用程式中使用C程式碼,雖然內聯程式碼被單獨編譯,但如果你能高效的利用C程式碼,它可以在同一個地方處理每一件事情。

  2、使用關鍵字排序

有很多古老的Python程式碼在執行時將花費額外的時間去創建一個自訂的排序函數。最好的排序方式是使用關鍵字和預設的sort()方法,看看下面的範例:

import operator
somelist = [(1, 5, 8), (6, 2, 4), (9, 7, 5)]
somelist.sort(key=operator.itemgetter(0))
somelist
#Output = [(1, 5, 8), (6, 2, 4), (9, 7, 5)]
somelist.sort(key=operator.itemgetter(1))
somelist
#Output = [(6, 2, 4), (1, 5, 8), (9, 7, 5)]
somelist.sort(key=operator.itemgetter(2))
somelist
#Output = [(6, 2, 4), (9, 7, 5), (1, 5, 8)],
登入後複製

每一個案例的清單是根據你選擇作為關鍵字參數的索引排序的,這種方式對字串和數字排序同樣適用。

  3、最佳化循環

每一種程式語言都強調循環語句的最佳化,Python也是一樣的。儘管你可以依賴豐富的技術讓循環運行的更快,然而,開發者經常忽略的一個方法是避免在循環內部使用點拼接字串。對於下面的範例:

lowerlist = ['this', 'is', 'lowercase']
upper = str.upper
upperlist = []
append = upperlist.append
for word in lowerlist:
    append(upper(word))
    print(upperlist)
    #Output = ['THIS', 'IS', 'LOWERCASE']
登入後複製

每次呼叫str.upper,Python都會去求這個方法的值。但是如果你把求值的結果放入一個變數中,就能提升程式的效能。這個關鍵是減少Python內執行的循環次數,因為Python解析這些實例是比較慢的。

  4、使用新版本

任何一個在線上搜尋Python資料的人都會發現無數關於Python版本遷移的資訊。通常,Python每個版本都針對先前的一個版本做了最佳化和改進,以讓Python運行的更快。限制因素是你喜歡的函數庫是否也針對Python的新版本做了改進。

當你使用了新的函數庫,獲得了Python的新版本,你需要保證程式碼依然能夠運行,檢查應用,修正差異。

然後,如果你只是保證應用程式能夠在新版本上運行,你可能會錯過新功能的更新。一旦你做了改進,在新版本下配置應用程序,檢查問題區域並優先使用新功能更新,對於之前的升級,用戶將看到更大性能的提升。

  5、嘗試多種程式方法

每次你創建應用程式的時候,都使用同一種程式設計方法,在某些情況下降導致程式運作會比預期的慢。在分析的過程中做一些小試驗。例如,當管理字典中的資料項目時,可以採用安全的方法來確定資料項目是否已經存在並需要更新它,或者你可以直接新增條目,然後處理專案根本不存在的情況。

n = 16
myDict = {}
for i in range(0, n):
    char = 'abcd'[i%4]
    if char not in myDict:
        myDict[char] = 0
        myDict[char] += 1
        print(myDict)
登入後複製

當myDict是空時,上述的程式碼通常會運行的更快。但當myDict已經有資料填入時,就有更好的方法可以選擇:

n = 16
myDict = {}
for i in range(0, n):
    char = 'abcd'[i%4]
    try:
        myDict[char] += 1
    except KeyError:
        myDict[char] = 1
    print(myDict)
登入後複製

兩種情況下都輸出{'d': 4, 'c': 4, 'b': 4, 'a': 4},唯一的差異是輸出是怎麼得到的。站在盒子外考慮和創造新的程式設計技巧都能讓你的程式獲得更快的運行速度。

  6、交叉編譯程式

        開發者有時會忘記電腦無法辨識任何一種現在應用程式語言,它只會辨識機器碼。為了運行程序,需要一個應用將人類可讀的代碼轉換成電腦能識別的代碼。當用一種語言寫程式時,例如Python,然後用另一種語言來運行它,例如C++,從效能角度看是有道理的。這取決於你想要用這個應用程式做什麼和主機系統能夠提供什麼資源。

        一个有趣的交叉编译器,Nuitka, 能将Python转换成C++代码,结果是你可以再本机模式下执行应用,而不是依赖于解释器。根据平台和任务中,你可以看到显著的性能提高。

以上是如何對Python進行效能最佳化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

sublime怎麼運行代碼python sublime怎麼運行代碼python Apr 16, 2025 am 08:48 AM

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Golang vs. Python:性能和可伸縮性 Golang vs. Python:性能和可伸縮性 Apr 19, 2025 am 12:18 AM

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

See all articles