16

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

但是,当我对数据进行排序时,我可以在和键之间calls进行选择。文档说,并且是呼叫计数,什么时候是原始呼叫计数。排序依据还是相同?有什么不同?ncallspcallscallsncallspcallscallsncallspcalls

4

1 回答 1

15

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)
于 2013-04-04T16:21:30.897 回答