在python上使用numpy / scipy len()cProfile结果

时间:2012-06-21 03:10:59

标签: python numpy scipy cprofile

  

可能重复:
  How can you profile a Python script?

我使用cProfile找出我的python代码大部分花费了什么方法,这是排序“percall”后的输出:

我发现方法len()大部分时间花在我身上:

53515/533   330 930 0   940 00{len}

但是,我知道len()调用会调用python对象__len__()方法,我怎么知道python类/对象花了我最多的东西?

我使用python 2.6.5并使用以下命令运行我的脚本:

python -m cProfile myscript.py

事实上,我的代码将使用python-numpyscipy并使用牛顿方法进行数值优化。我相信目标函数的梯度计算大部分时间花在了我身上,并希望找出它花费这么多的原因。

1 个答案:

答案 0 :(得分:0)

cProfile为每个函数提供两次:在此函数中花费的总时间,包括子函数和在此函数中花费的总时间(不包括子函数)。要检测瓶颈,您通常会根据这两个指标考虑最大的成本。

在你的情况下,我会寻找调用len的函数,看看我是否可以将值存储在某处以避免不必要的调用。