Python效能分析器Profile

2021-07-16 17:39:21 字數 2483 閱讀 1719

在使用python進行開發的過程中,有時候我們需要對python程式的執行效能進行分析,此時我們就需要用到python的效能分析工具,這裡我就簡單說說python中的profile和pstats庫。

下面是乙個測試程式

import os

defa

(): sum = 0

for i in range(1, 10001):

sum += i

return sum

defb

(): sum = 0

for i in range(1, 100):

sum += a()

return sum

print b()

此時我們可以使用下面的命令來檢視分析結果

python -m cprofile test.py
執行結果如下:

$ python -m cprofile test.py

4950495000

202 function calls in 0.040 seconds

ordered by: standard name

ncalls

tottime percall cumtime percall filename:lineno(function)

10.000

0.000

0.040

0.040

test.py:1

()990.035

0.000

0.040

0.000

test.py:3

(a)1

0.000

0.000

0.040

0.040

test.py:9

(b)1

0.000

0.000

0.000

0.000

1000.005

0.000

0.005

0.000

其中:

- tottime 是函式本身不包括它呼叫其它函式使用的時間

- cumtime 是函式本身包括它呼叫其它函式使用的時間

也可以使用下面的命令把結果儲存在乙個檔案裡

python -m cprofile -o result test.py
然後使用pstats來格式化顯示結果

python -c "import pstats; pstats.stats('result').sort_stats(-1).print_stats()"
thu aug 11

13:20:20

2016 result

202function calls in 0.037 seconds

ordered by: standard name

ncalls

tottime percall cumtime percall filename:lineno(function)

10.000

0.000

0.037

0.037

test.py:1

()990.032

0.000

0.036

0.000

test.py:3

(a)1

0.000

0.000

0.037

0.037

test.py:9

(b)1

0.000

0.000

0.000

0.000

1000.004

0.000

0.004

0.000

另外,我們也可以在**裡直接嵌入**來使用cprofile和pstats模組,這樣在程式退出時就會自動生成分析結果並列印,如下:

import os

defa

(): sum = 0

for i in range(1, 10001):

sum += i

return sum

defb

(): 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()

此時執行上面的程式就只要使用下面的命令

python test.py

Windows效能分析器概述(三)

四 系統需求 下面的 列出了安裝和執行windows效能分析器所需要的系統配置 作業系統 windows vista sp1或更高版本,以及windows server 2008或更高版本 對於windows xp sp2 和 windows server 2003 sp1 的支援,請參考 本文的 ...

分析與分析器

分析 包含下面的過程 分析器執行上面的工作。分析器 實際上是將三個功能封裝到了乙個包裡 字元過濾器 首先,字串按順序通過每個 字元過濾器 他們的任務是在分詞前整理字串。乙個字元過濾器可以用來去掉html,或者將 轉化成 and 分詞器其次,字串被 分詞器分為單個的詞條。乙個簡單的分詞器遇到空格和標點...

詞法分析器

這是我自己的第一篇部落格,就分享一下最近才做完的編譯原理實驗,詞法分析器。本次實驗中我用mysql資料庫儲存自動機狀態表,這樣做的目的只是為了在後續的課設中可以繼續使用現在的 這一段 並不是太完善,發出來只是為了太完善。裡面還有很多問題,比如對字元和字串的識別,不知道為什麼資料庫無法將 和 轉換到我...