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

On python with numpy/scipy len() cProfile result

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How can you profile a Python script?

我已经使用cProfile来找出我大部分时间在Python代码上使用的方法,这里是对"percall"排序后的输出:

我发现len()的方法花了我大部分时间:

1
53515/533   330 930 0   940 00{len}

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

我使用的是python 2.6.5,运行脚本时使用了:

1
python -m cProfile myscript.py

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


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

在您的例子中,我会寻找很多调用len的函数,看看是否可以将值存储在某个地方以避免不必要的调用。