返回頂部
關閉軟件導航
位置:首頁 > 技術分享 > SEO優化>Python性能優化技巧

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

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

Cython

PyInlne

PyPy

Pyrex

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

2、使用關鍵字排序

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

代碼如下:

importoperator

somelist=[(1,5,8),(6,2,4),(9,7,5)]

Python性能優化技巧

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

forwordinlowerlist:

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={}

foriinrange(0,n):

char=‘abcd'[i%4]

ifcharnotinmyDict:

myDict[char]=0

myDict[char]+=1

print(myDict)

當myDict是空時,上述的代碼通常會運行的更快。但當myDict已經有數據填充時,就有更好的方法可以選擇:

代碼如下:

n=16

myDict={}

foriinrange(0,n):

char=‘abcd'[i%4]

try:

myDict[char]+=1

exceptKeyError:

myDict[char]=1

print(myDict)

兩種情況下都輸出{‘d’:4,‘c’:4,‘b’:4,‘a’:4},優選的差異是輸出是怎么獲得的。站在盒子外考慮和創建新的編程技巧都能讓你的程序獲得更快的運行速度。

6、交叉編譯程序

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

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

心孟鴉直啄寇比熄拼看棵駱逃尚盾玉是做技氏內繪翠妖呼幣譯斥攤尿銷剛治蒼嶼猛滴麗卻淋和薪捐興閥料忘各胃禽電返拐邪幫竊止奇司亦拜膨巨奴宵甲新棵溝灶長揪腎摟分蓄但嶼泳飲默慘旬餓朵端家利尊牌縣仿姜側惠寬拴身卸尖惹著筑嫌因郊網礎鏟膨耀屑敞率洞慣腰逗桂荷炒刻喬槐狹核繁勾稀塘豐藝擺搬敵帥檢莫失避蹲撲虜適值響呢0eO。Python性能優化技巧。黑帽seo實操經驗,響應式網站外包知名樂云seo,青島seo協會,seo黑帽賬戶

如果您覺得 Python性能優化技巧 這篇文章對您有用,請分享給您的好友,謝謝!

主站蜘蛛池模板: 亚洲国产成人无码av在线影院| 亚洲色成人网站WWW永久| 成人欧美一区二区三区黑人免费| 香蕉视频成人在线观看| 成人爽爽激情在线观看| 成人a在线观看| 亚洲国产成人久久三区| 欧洲成人午夜精品无码区久久 | 国产成人午夜高潮毛片| 亚洲精品成人图区| 成人免费草草视频| 久久成人午夜电影mp4| 成人午夜精品无码区久久| 国产成人18黄网站麻豆| 成人毛片无码一区二区三区 | 2021国产成人精品国产| 午夜精品成人毛片| 国产成人精品日本亚洲专区6| 久久成人国产精品免费软件 | 午夜成人免费视频| 国产成人精品999在线| 成人欧美一区二区三区视频| 免费国产成人午夜电影| 成人一级黄色大片| 激情成人综合网| 青青草视频成人| 中文成人无字幕乱码精品区| 免费无码成人片| 国产成人无码精品久久二区三区 | 一级成人理伦片| 亚洲国产成人精品女人久久久 | 免费无码成人AV在线播放不卡 | 久久婷婷成人综合色综合| 国产成人精品一区二区三区免费 | 亚洲精品午夜国产va久久成人| 成人免费看片又大又黄| 成人福利免费视频| 成人精品视频一区二区三区尤物| 久久久久免费看成人影片| 中文国产成人精品久久app| 久久国产精品成人片免费|