国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python性能分析工具Profile使用實例

2020-02-15 21:30:33
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了Python性能分析工具Profile使用實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

代碼優化的前提是需要了解性能瓶頸在什么地方,程序運行的主要時間是消耗在哪里,對于比較復雜的代碼可以借助一些工具來定位,python 內置了豐富的性能分析工具,如 profile,cProfile 與 hotshot 等。其中 Profiler 是 python 自帶的一組程序,能夠描述程序運行時候的性能,并提供各種統計幫助用戶定位程序的性能瓶頸。Python 標準模塊提供三種 profilers:cProfile,profile 以及 hotshot。

profile 的使用非常簡單,只需要在使用之前進行 import 即可,也可以在命令行中使用。

使用Profile

測試示例:

import profiledef a():  sum = 0  for i in range(1, 10001):    sum += i  return sumdef b():  sum = 0  for i in range(1, 100):    sum += a()  return sumif __name__ == "__main__":  profile.run("b()")

輸出結果:

   <br data-filtered="filtered"> 104 function calls in 0.094 seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function)   1  0.000  0.000  0.094  0.094 :0(exec)   1  0.000  0.000  0.000  0.000 :0(setprofile)   1  0.000  0.000  0.094  0.094 <string>:1(<module>)   1  0.000  0.000  0.094  0.094 profile:0(b())   0  0.000       0.000     profile:0(profiler)  99  0.094  0.001  0.094  0.001 test.py:15(a)   1  0.000  0.000  0.094  0.094 test.py:21(b)

其中輸出每列的具體解釋如下:

●ncalls:表示函數調用的次數;

●tottime:表示指定函數的總的運行時間,除掉函數中調用子函數的運行時間;

●percall:(第一個 percall)等于 tottime/ncalls;

●cumtime:表示該函數及其所有子函數的調用運行的時間,即函數開始調用到返回的時間;

●percall:(第二個 percall)即函數運行一次的平均時間,等于 cumtime/ncalls;

●filename:lineno(function):每個函數調用的具體信息;

如果需要將輸出以日志的形式保存,只需要在調用的時候加入另外一個參數。如 profile.run(“profileTest()”,”testprof”)。

命令行

如果我們不想在程序中調用profile庫使用,可以在命令行使用命令。

import osdef a():  sum = 0  for i in range(1, 10001):    sum += i  return sumdef b():  sum = 0  for i in range(1, 100):    sum += a()  return sumprint b()

運行命令查看性能分析結果

python -m cProfile test.py

將性能分析結果保存到result文件

python -m cProfile -o result test.py
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 那曲县| 洛浦县| 西藏| 揭西县| 定结县| 德阳市| 宜城市| 巨鹿县| 闻喜县| 长垣县| 大港区| 永平县| 平江县| 治县。| 江口县| 龙海市| 商丘市| 东港市| 吴桥县| 宁阳县| 潞西市| 宁晋县| 富顺县| 凤山市| 金山区| 景洪市| 麻江县| 墨竹工卡县| 修水县| 新安县| 龙山县| 阿荣旗| 华阴市| 娄底市| 临汾市| 洛隆县| 大邑县| 弥勒县| 白水县| 弥勒县| 玉林市|