在Python cProfile中,调用计数和原始调用计数有什么区别?

Cha*_*net 15 python profiling

当我使用时显示分析数据时pstats,第一列是每个函数的调用次数.

然而,当我整理的数据,我有选择之间calls,ncallspcalls钥匙.文档说明calls并且ncalls呼叫计数,何时pcalls原始呼叫计数.是排序calls还是ncalls相同?有什么不同pcalls

Pav*_*sov 14

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)
Run Code Online (Sandbox Code Playgroud)