在Python cProfile中,调用计数和基元调用计数之间有什么区别?

在Python cProfile中,调用计数和基元调用计数之间有什么区别?,python,profiling,Python,Profiling,当我使用pstats显示分析数据时,第一列是每个函数的调用数 但是,当我对数据进行排序时,我可以在调用、ncall和pcall键之间进行选择。文档说明,calls和ncalls是调用计数,而pcalls是原始调用计数。按调用或ncalls排序是否相同?与pcall有什么不同 我们将原语定义为表示调用不是通过递归诱导的 …当函数不递归时,这两个值是相同的 按调用或ncall排序是相同的 当第一列中有两个数字(例如43/3)时,后者是基本调用的数量,前者是实际调用的数量。请注意,当函数不递归时,

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

但是,当我对数据进行排序时,我可以在
调用
ncall
pcall
键之间进行选择。文档说明,
calls
ncalls
是调用计数,而
pcalls
是原始调用计数。按
调用
ncalls
排序是否相同?与
pcall
有什么不同

我们将原语定义为表示调用不是通过递归诱导的

…当函数不递归时,这两个值是相同的

调用
ncall
排序是相同的


当第一列中有两个数字(例如43/3)时,后者是基本调用的数量,前者是实际调用的数量。请注意,当函数不递归时,这两个值是相同的,只有一个数字是相同的 印刷品:

[43]中的
:定义a(i):
..:如果i==0:
……返回
..:a(i-1)
....:
在[54]中:%pruna(0)
ncalls tottime percall cumtime percall文件名:lineno(函数)
1 0.000 0.000 0.000 0.000:1(a)
在[55]中:%修剪a(1)
ncalls tottime percall cumtime percall文件名:lineno(函数)
2/1 0.000 0.000 0.000 0.000:1(a)
在[56]:%pruna(3)
ncalls tottime percall cumtime percall文件名:lineno(函数)
4/1 0.000 0.000 0.000 0.000:1(a)
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)