在使用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資料庫儲存自動機狀態表,這樣做的目的只是為了在後續的課設中可以繼續使用現在的 這一段 並不是太完善,發出來只是為了太完善。裡面還有很多問題,比如對字元和字串的識別,不知道為什麼資料庫無法將 和 轉換到我...