步驟
-
導(dǎo)入對應(yīng)功能包
import cProfile,pstats
-
將性能檢查代碼嵌入指定區(qū)域
#===========example======== pr = cProfile.Profile() pr.enable() #---------enable和disable中間的代碼片段會(huì)進(jìn)行性能檢測 o_seq_view = CSequenceView(ctx) pr.disable() ps = pstats.Stats(pr) ps.sort_stats("cumulative")#將收集到的數(shù)據(jù)按"累計(jì)時(shí)間"從大到小排序为迈。 ps.print_stats(50)#僅打印排序后的top50個(gè)-輸出至控制臺(tái)
-
輸出信息中的關(guān)鍵列屬性含義
ncalls : 總調(diào)用次數(shù) cumtime: 累積時(shí)間 percall(第二個(gè)):函數(shù)運(yùn)行一次的平均時(shí)間。(包含了所有子函數(shù)運(yùn)行時(shí)間)
參考
The following are the valid string and SortKey:
SortKey代表可填入sort_stats方法中的排序枚舉量
有效字符串參數(shù) | 有效枚舉參數(shù) | 含義 |
---|---|---|
'calls' |
SortKey.CALLS | 調(diào)用次數(shù) |
'cumulative' |
SortKey.CUMULATIVE | 累積時(shí)間 |
'cumtime' |
N/A | 累積時(shí)間 |
'file' |
N/A | 文件名 |
'filename' |
SortKey.FILENAME | 文件名 |
'module' |
N/A | 文件名 |
'ncalls' |
N/A | 調(diào)用次數(shù) |
'pcalls' |
SortKey.PCALLS | 原始調(diào)用計(jì)數(shù) |
'line' |
SortKey.LINE | 行號 |
'name' |
SortKey.NAME | 函數(shù)名稱 |
'nfl' |
SortKey.NFL | 名稱/文件/行 |
'stdname' |
SortKey.STDNAME | 標(biāo)準(zhǔn)名稱 |
'time' |
SortKey.TIME | 內(nèi)部時(shí)間 |
'tottime' |
N/A | 內(nèi)部時(shí)間The following are the valid string and SortKey: |
可視化(需要結(jié)合文件輸出操作)
#輸出到文件中-可借助Stats類中的dump_stats方法
#==========example=========
pr = cProfile.Profile()
pr.enable()
#---your -logic--
pr.disable()
ps = pstats.Stats(pr)
ps.sort_stats("cumulative")
ps.print_stats(15)
ps.dump_stats("test.out")
還需要安裝對應(yīng)的可視化工具snakeviz
,采用python的pip命令進(jìn)行安裝即可该酗。
如何生成?
找到test.out的所在文件夾檬洞,執(zhí)行命令snakeviz test.out
即可榔昔。