国产探花免费观看_亚洲丰满少妇自慰呻吟_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
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 左云县| 濮阳市| 伊吾县| 南京市| 肇源县| 丘北县| 南皮县| 宣武区| 安国市| 筠连县| 阜宁县| 太保市| 芜湖市| 志丹县| 淮阳县| 黔南| 丘北县| 阿瓦提县| 柞水县| 文成县| 乐业县| 芮城县| 西乌| 鄢陵县| 永嘉县| 怀仁县| 万安县| 金川县| 年辖:市辖区| 阿克陶县| 富蕴县| 安泽县| 全南县| 仁布县| 建德市| 江永县| 临潭县| 澄江县| 荥经县| 临清市| 阿拉善盟|