如何使用?profile?進行python代碼性能分析
定位程序性能瓶頸
對代碼優(yōu)化的前提是需要了解性能瓶頸在什么地方,程序運行的主要時間是消耗在哪里,對于比較復雜的代碼可以借助一些工具來定位,python 內(nèi)置了豐富的性能分析工具,如 profile,cProfile 與 hotshot 等。其中 Profiler 是 python 自帶的一組程序,能夠描述程序運行時候的性能,并提供各種統(tǒng)計幫助用戶定位程序的性能瓶頸。Python 標準模塊提供三種 profilers:cProfile,profile 以及 hotshot。
profile 的使用非常簡單,只需要在使用之前進行 import 即可。具體實例如下:
使用 profile 進行性能分析
import profile def profileTest(): Total =1; for i in range(10): Total=Total*(i+1) print Total return Total if __name__ == "__main__": profile.run("profileTest()")
程序的運行結(jié)果如下:
圖 1. 性能分析結(jié)果
其中輸出每列的具體解釋如下:
●ncalls:表示函數(shù)調(diào)用的次數(shù);
●tottime:表示指定函數(shù)的總的運行時間,除掉函數(shù)中調(diào)用子函數(shù)的運行時間;
●percall:(第一個 percall)等于 tottime/ncalls;
●cumtime:表示該函數(shù)及其所有子函數(shù)的調(diào)用運行的時間,即函數(shù)開始調(diào)用到返回的時間;
●percall:(第二個 percall)即函數(shù)運行一次的平均時間,等于 cumtime/ncalls;
●filename:lineno(function):每個函數(shù)調(diào)用的具體信息;
如果需要將輸出以日志的形式保存,只需要在調(diào)用的時候加入另外一個參數(shù)。如 profile.run(“profileTest()”,”testprof”)。
到此這篇關于如何使用 profile 進行python代碼性能分析的文章就介紹到這了,更多相關profile python代碼性能分析內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
sublime3之內(nèi)網(wǎng)安裝python插件Anaconda的流程
這篇文章主要介紹了sublime3之內(nèi)網(wǎng)安裝python插件Anaconda的流程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11使用keras實現(xiàn)孿生網(wǎng)絡中的權(quán)值共享教程
這篇文章主要介紹了使用keras實現(xiàn)孿生網(wǎng)絡中的權(quán)值共享教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06pytorch實現(xiàn)onehot編碼轉(zhuǎn)為普通label標簽
今天小編就為大家分享一篇pytorch實現(xiàn)onehot編碼轉(zhuǎn)為普通label標簽,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01