[英]In Python cProfile, what is the difference between calls count and primitive calls count?
當我使用pstats
顯示分析數據時,第一列是每個函數的調用數。
但是,當我對數據進行排序時,我可以選擇calls
, ncalls
和pcalls
鍵。 文件說, calls
和ncalls
是調用次數 ,當pcalls
是原始調用計數 。 通過calls
或ncalls
排序是一樣的嗎? 與pcalls
什么不同?
http://docs.python.org/2/library/profile.html#module-cProfile
我們定義原語意味着調用不是通過遞歸引起的。
...當函數沒有遞歸時,這兩個值是相同的
通過calls
或ncalls
排序是相同的。
當第一列中有兩個數字時(例如,43/3),則后者是原始調用的數量,前者是實際的調用數。 請注意,當函數沒有遞歸時,這兩個值是相同的,只打印單個數字:
In [43]: def a(i):
....: if i == 0:
....: return
....: a(i-1)
....:
In [54]: %prun a(0)
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.000 0.000 <ipython-input-43-25b7f3d268b8>:1(a)
In [55]: %prun a(1)
ncalls tottime percall cumtime percall filename:lineno(function)
2/1 0.000 0.000 0.000 0.000 <ipython-input-43-25b7f3d268b8>:1(a)
In [56]: %prun a(3)
ncalls tottime percall cumtime percall filename:lineno(function)
4/1 0.000 0.000 0.000 0.000 <ipython-input-43-25b7f3d268b8>:1(a)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.