如何读取IPython%prun(profiler)命令的输出?

时间:2011-08-15 19:30:38

标签: python interpreter profiler ipython

我跑了这个:

In [303]: %prun my_function()
         384707 function calls (378009 primitive calls) in 83.116 CPU seconds

   Ordered by: internal time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    37706   41.693    0.001   41.693    0.001 {max}
    20039   36.000    0.002   36.000    0.002 {min}
    18835    1.848    0.000    2.208    0.000 helper.py:119(fftfreq)

- 剪断 -

每次tottime,percall,cumtime是什么? ncalls相当明显(调用函数的次数)。我的 guess 是tottime是函数花费的总时间,不包括在自己的函数调用中花费的时间; percall是???; cumtime是在函数调用中花费的总时间,包括在其自己的函数调用中花费的时间(当然,不包括重复计数)。 docs不太有用;谷歌搜索也无济于事。

1 个答案:

答案 0 :(得分:31)

它只是Python自己的探查器的一个方便的包装器,其文档在这里:

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

引用:

  

<强> ncalls   对于通话次数,

     

tottime 表示在给定函数中花费的总时间(并且不包括调用子函数所花费的时间),

     

percall 是tottime除以ncalls的商数

     

cumtime 是在此和所有子功能(从调用到退出)中花费的总时间。这个数字即使对于递归也是准确的   功能

     

percall 是cumtime除以原始调用的商数