欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python性能優(yōu)化技巧

 更新時間:2015年03月09日 14:41:34   投稿:hebedich  
Python的批評者聲稱Python性能低效、執(zhí)行緩慢,但實際上并非如此:嘗試以下6個小技巧,可以加快Pytho應用程序。

Python是一門非??岬恼Z言,因為很少的Python代碼可以在短時間內做很多事情,并且,Python很容易就能支持多任務和多重處理。

py

  1、關鍵代碼可以依賴于擴展包

Python使許多編程任務變得簡單,但是對于很關鍵的任務并不總是提供最好的性能。使用C、C++或者機器語言擴展包來執(zhí)行關鍵任務能極大改善性能。這些包是依賴于平臺的,也就是說,你必須使用特定的、與你使用的平臺相關的包。簡而言之,該解決方案提供了一些應用程序的可移植性,以換取性能,您可以獲得只有通過直接向底層主機編程。下面這些擴展包你可以考慮添加到你的個人擴展庫中:

Cython
PyInlne
PyPy
Pyrex

這些包有不同的作用和執(zhí)行方式。例如,Pyrex 讓Python處理一些內存任務變得簡單高效;PyInline可以直接讓你在Python應用程序中使用C代碼,雖然內聯(lián)代碼被單獨編譯,但是如果你能高效的利用C代碼,它可以在同一個地方處理每一件事情。

  2、使用關鍵字排序

有很多古老的Python代碼在執(zhí)行時將花費額外的時間去創(chuàng)建一個自定義的排序函數(shù)。最好的排序方式是使用關鍵字和默認的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)],

每一個案例的列表是根據(jù)你選擇作為關鍵字參數(shù)的索引排序的,這種方式對字符串和數(shù)字排序同樣適用。

  3、優(yōu)化循環(huán)

每一種編程語言都強調循環(huán)語句的優(yōu)化,Python也是一樣的。盡管你可以依賴于豐富的技術讓循環(huán)運行的更快,然而,開發(fā)者經常忽略的一個方法是避免在循環(huán)內部使用點拼接字符串。對于下面的示例:

復制代碼 代碼如下:

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內執(zhí)行的循環(huán)次數(shù),因為Python解析這些實例是比較慢的。

  4、使用新版本

任何一個在線上搜索Python資料的人都會發(fā)現(xiàn)無數(shù)關于Python版本遷移的信息。通常,Python每一個版本都針對之前的一個版本做了優(yōu)化和改進,以讓Python運行的更快。限制因素是你喜歡的函數(shù)庫是否也針對Python的新版本做了改進。

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

然后,如果你僅僅是保證應用能夠在新版本上運行,你可能錯過新功能的更新。一旦你做了改進,在新版本下配置應用程序,檢查問題區(qū)域并優(yōu)先使用新功能更新,對于之前的升級,用戶將看到更大性能的提升。

  5、嘗試多種編程方法

每一次你創(chuàng)建應用的時候,都使用同一種編程方法,在某些情況下降導致程序運行會比預期的慢。在分析的過程中做一些小試驗。例如,當管理字典中的數(shù)據(jù)項時,可以采用安全的方法確定數(shù)據(jù)項是否已經存在并需要更新它,或者你可以直接添加條目,然后處理項目根本不存在的情況。

復制代碼 代碼如下:

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已經有數(shù)據(jù)填充時,就有更好的方法可以選擇:

復制代碼 代碼如下:

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},唯一的差異是輸出是怎么獲得的。站在盒子外考慮和創(chuàng)建新的編程技巧都能讓你的程序獲得更快的運行速度。

  6、交叉編譯程序

        開發(fā)者有時會忘記計算機不能識別任何一種現(xiàn)在應用程序語言,它只識別機器代碼。為了運行程序,需要一個應用將人類可讀的代碼轉換成計算機能識別的代碼。當用一種語言寫程序時,例如Python,然后用另外一種語言來運行它,例如C++,從性能角度看是有道理的。這個取決于你想要用這個應用做什么和主機系統(tǒng)能夠提供什么資源。

        一個有趣的交叉編譯器,Nuitka, 能將Python轉換成C++代碼,結果是你可以再本機模式下執(zhí)行應用,而不是依賴于解釋器。根據(jù)平臺和任務中,你可以看到顯著的性能提高。

以上就是本文的全部內容了,希望對大家學習Python有所幫助。

相關文章

  • Python tkinter實現(xiàn)簡單加法計算器代碼實例

    Python tkinter實現(xiàn)簡單加法計算器代碼實例

    這篇文章主要介紹了Python tkinter實現(xiàn)簡單加法計算器代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • Python控制臺獲取輸入與常見的正則表達式用法

    Python控制臺獲取輸入與常見的正則表達式用法

    這篇文章主要給大家介紹了關于Python控制臺獲取輸入與常見的正則表達式用法的相關資料,在Python編程中,控制臺輸入和正則表達式是兩個重要而實用的概念,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • pyinstaller通過spec文件打包py程序的步驟

    pyinstaller通過spec文件打包py程序的步驟

    這篇文章主要介紹了pyinstaller通過spec文件打包py程序,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • Python的Flask框架與數(shù)據(jù)庫連接的教程

    Python的Flask框架與數(shù)據(jù)庫連接的教程

    這篇文章主要介紹了Python的Flask框架與數(shù)據(jù)庫連接的教程,是Flask框架學習當中的基本知識,需要的朋友可以參考下
    2015-04-04
  • python 數(shù)字轉換為日期的三種實現(xiàn)方法

    python 數(shù)字轉換為日期的三種實現(xiàn)方法

    在Python中,我們經常需要處理日期和時間,本文主要介紹了python 數(shù)字轉換為日期的三種實現(xiàn)方法,包含datetime模塊,strftime方法及pandas庫,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • python+pandas分析nginx日志的實例

    python+pandas分析nginx日志的實例

    下面小編就為大家分享一篇python+pandas分析nginx日志的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Pycharm配置遠程調試的方法步驟

    Pycharm配置遠程調試的方法步驟

    這篇文章主要介紹了Pycharm配置遠程調試的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • python+pytest自動化測試函數(shù)測試類測試方法的封裝

    python+pytest自動化測試函數(shù)測試類測試方法的封裝

    這篇文章主要介紹了python+pytest自動化測試函數(shù)測試類測試方法的封裝,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • Python模擬FTP文件服務器的操作方法

    Python模擬FTP文件服務器的操作方法

    這篇文章主要介紹了Python_模擬FTP文件服務器的操作方法,分為服務端和客戶端,要求可以有多個客戶端同時操作。本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-02-02
  • Django MTV和MVC的區(qū)別詳解

    Django MTV和MVC的區(qū)別詳解

    這篇文章主要介紹了Django MTV和MVC的區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03

最新評論