【问题标题】:In Python cProfile, what is the difference between calls count and primitive calls count?在 Python cProfile 中,调用计数和原始调用计数有什么区别?
【发布时间】:2013-03-26 20:02:04
【问题描述】:

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

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

【问题讨论】:

    标签: python profiling


    【解决方案1】:

    http://docs.python.org/2/library/profile.html#module-cProfile

    我们将原语定义为调用不是通过递归引起的。

    ...当函数不递归时,这两个值是一样的

    callsncalls排序是一样的。


    当第一列有两个数字时(例如,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)
    

    【讨论】:

      猜你喜欢
      • 2017-02-17
      • 1970-01-01
      • 1970-01-01
      • 2013-09-01
      • 1970-01-01
      • 2011-03-31
      • 2021-12-06
      • 2013-03-30
      相关资源
      最近更新 更多