中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Profile性能分析工具怎么在Python中使用

發布時間:2021-03-23 15:21:32 來源:億速云 閱讀:355 作者:Leah 欄目:開發技術

這篇文章給大家介紹Profile性能分析工具怎么在Python中使用,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

Profiler 是 python 自帶的一組程序,能夠描述程序運行時候的性能,并提供各種統計幫助用戶定位程序的性能瓶頸。Python 標準模塊提供三種 profilers:cProfile,profile 以及 hotshot。

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

使用Profile

測試示例:

import profile
def a():
  sum = 0
  for i in range(1, 10001):
    sum += i
  return sum

def b():
  sum = 0
  for i in range(1, 100):
    sum += a()
  return sum
if __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 os

def a():
  sum = 0
  for i in range(1, 10001):
    sum += i
  return sum

def b():
  sum = 0
  for i in range(1, 100):
    sum += a()
  return sum

print b()

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

python -m cProfile test.py

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

python -m cProfile -o result test.py

使用pstats來格式化顯示結果

python -c "import pstats; p=pstats.Stats('reslut); p.print_stats()"

python -c "import pstats; p=pstats.Stats('result'); p.sort_stats('time').print_stats()

sort_stats支持以下參數:

calls, cumulative, file, line, module, name, nfl, pcalls, stdname, time

測試示例:在代碼中直接使用profile與stats

import os
def a():
	sum = 0
for i in range(1, 10001):
	sum += i
return sum
def b():
	sum = 0
for i in range(1, 100):
	sum += a()
return sum
print b()
import cProfile# cProfile.run("b()")
cProfile.run("b()", "result")
import pstats
pstats.Stats('result').sort_stats(-1).print_stats()

關于Profile性能分析工具怎么在Python中使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

岳池县| 泾阳县| 泰顺县| 天峨县| 竹山县| 饶阳县| 外汇| 天门市| 五台县| 延安市| 怀仁县| 鄱阳县| 元谋县| 图片| 宣城市| 弥勒县| 鸡泽县| 光泽县| 钟山县| 勐海县| 巴马| 连南| 阿图什市| 榆树市| 吉林省| 大埔区| 汾西县| 西宁市| 雷山县| 滨州市| 清水河县| 大理市| 吴江市| 绥中县| 自治县| 纳雍县| 萍乡市| 麻江县| 龙井市| 武山县| 稷山县|