日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python以运行效率高著称吗_提升Python程序运行效率的6个方法

發布時間:2024/7/23 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python以运行效率高著称吗_提升Python程序运行效率的6个方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python是一個很酷的語言,因為你可以在很短的時間內利用很少的代碼做很多事情。不僅如此,它還能輕松地支持多任務,比如多進程等。Python批評者有時會說Python執行緩慢。本文將嘗試介紹6個技巧,可加速你的Python應用程序。

1.讓關鍵代碼依賴于外部包

雖然Python讓許多編程任務變得容易,但它可能并不總能為緊急的任務提供最佳性能。你可以為緊急的任務使用C、C++或機器語言編寫的外部包,這樣可以提高應用程序的性能。這些包都是不能跨平臺的,這意味著你需要根據你正在使用的平臺,尋找合適的包。簡而言之,這個方案放棄了一些應用程序的可移植性,以換取只有在特定主機上直接編程才能獲得的程序性能。這里有一些你應該考慮加入到你的“性能兵工廠”的包:

Cython

PyInlne

PyPy

Pyrex

這些包以不同的方式提高性能。例如,Pyrex能夠擴展Python所能做的事情,例如使用C的數據類型來讓內存任務更加有效或直接。PyInIne讓你在Python應用程序中直接使用C代碼。程序中的內聯代碼單獨編譯,但它在利用C語言所能提供的效率的同時,也讓所有的代碼都在同一個地方。

2.排序時使用鍵(key)

有很多老的Python排序代碼,它們在你創建一個自定義的排序時花費你的時間,但在運行時確實能加速執行排序過程。元素排序的最好方法是盡可能使用鍵(key)和默認的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)],

每一個實例中,根據你選擇的作為key參數部分的索引,數組進行了排序。類似于利用數字進行排序,這種方法同樣適用于利用字符串排序。

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在循環內部執行的工作量,因為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++代碼。這么做的結果是,你可以在原生模式下執行應用程序,而不是依靠解釋器。根據平臺和任務,你可以看到一個顯著的性能提升。

(注意:Nuitka目前還處于測試階段,所以用它來產品程序時需要小心。實際上,目前最好將其用于實驗。現在也有一些關于交叉編譯是否是得到更好性能的最佳方式的討論。開發者已經利用交叉編譯好幾年了,目的是實現特定的目標,比如更好的應用程序的速度。記住,每一個解決方案都會有得有失,你應該在將一個解決方案用于生產環境之前就好好考慮一下得失情況。)

在使用一個交叉編譯器時,要確保它支持你使用的Python的版本。Nuitka支持Python2.6、2.7、3.2和3.3。想讓這個方案發揮作用,你需要一個Python解釋器和一個C++編譯器。Nuitka支持多種C++編譯器,包括Microsoft Visual Studio、MinGW 和 Clang/LLVM。

交叉編譯也可能帶來一些嚴重的負面影響。例如,當利用Nuitka工作時,你會發現即使一個小程序也能消耗很大的硬盤空間,這是因為Nuitka使用大量的動態鏈接庫(DLLs)實現Python的功能。所以當你面對一個資源有限的系統時,這個方案可能不會很好的起作用。

總結

這六個技巧中的任意一個,都可以幫助你創造更快的Python程序。但任何技巧都不是萬能的,不能每次都起作用。有些技巧在Python的特定版本下比其他技巧的更有效——甚至系統平臺也能影響它們的效果。你需要配置你的應用,確定哪個地方讓其運行緩慢,然后嘗試似乎能最好的解決這些問題的一些技巧。

本條技術文章來源于互聯網,如果無意侵犯您的權益請點擊此處反饋版權投訴

本文系統來源:php中文網

總結

以上是生活随笔為你收集整理的python以运行效率高著称吗_提升Python程序运行效率的6个方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久一区二 | 成人福利视频网 | 最新自拍偷拍 | 青青草自拍偷拍 | 欧美日韩四区 | 日本女人一级片 | 午夜福利123| 91福利在线观看视频 | 欧美高清不卡 | 成人小视频在线观看 | 99热免费在线观看 | 国产美女免费观看 | 亚洲一区在线免费观看 | 欧美精品自拍偷拍 | 美女啪啪国产 | 亲嘴扒胸摸屁股免费视频日本网站 | 国产在线一级 | 暗呦丨小u女国产精品 | 国产91久久精品一区二区 | 亚洲精品国产一区二 | 亚洲黄色在线播放 | 日韩成人一区二区视频 | a级片免费播放 | 午夜肉伦伦 | 精品视频久久久 | 爆乳熟妇一区二区三区霸乳 | 日本高清免费不卡视频 | sese在线| www.蜜桃av | 国产91熟女高潮一区二区 | 欧洲亚洲国产精品 | 灌篮高手全国大赛电影 | 奇米影视第四色888 免费观看a毛片 | 美女隐私免费看 | 天天操网址 | 一级激情片 | 无码成人精品区在线观看 | 亚洲精品1区2区3区 国产丝袜网站 | 日本做爰三级床戏 | 婷婷欧美| 日本激情久久 | 91av在线视频观看 | 人人插人人干 | 久久久精品人妻无码专区 | 97视频在线免费观看 | 日本成人三级 | 蜜臀av在线免费观看 | 免费av导航 | 天天色天天干天天 | 成人影视在线看 | 天天色天天搞 | 日本老年老熟无码 | 自拍偷拍在线视频 | 开心激情五月婷婷 | 日本高清不卡在线 | 免费中文字幕 | 放荡的少妇2欧美版 | 国产精品1000部啪视频 | 西西人体大胆4444ww张筱雨 | heyzo国产| 性欧美在线视频观看 | 久久国产精品一区二区三区 | 久久大胆| 日本大尺度电影免费观看全集中文版 | 又黄又色又爽的视频 | 亚洲剧情在线 | 中文字幕国产在线观看 | 欧美成人777| 99在线无码精品入口 | 自拍偷拍亚洲区 | 91九色在线视频 | 欧美成人免费视频 | 午夜私人福利 | 九九热视频免费观看 | 小视频在线观看 | 精品乱码一区二区三四区视频 | 特级淫片aaaaaaa级 | av亚州 | 午夜三级视频 | 国产精品12区| 免费看欧美一级片 | 日本视频色 | 成人免费影片 | 欧美成人高潮一二区在线看 | 亚洲第一大网站 | 亚洲熟女乱色一区二区三区 | 欧美男女视频 | 亚洲天堂社区 | 天堂va蜜桃一区二区三区漫画版 | 韩国美女被c | 青青草草 | 色屁屁视频 | 色哟哟视频网站 | 美女调教视频 | 自拍偷拍激情视频 | 国产淫视| 红桃视频一区二区三区免费 | 国产夫妻精品 | 成人永久免费视频 |