4

可能重复:
如何分析 Python 脚本?

我曾经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-numpy,scipy并使用牛顿法进行数值优化。我相信目标函数的梯度计算花费了我大部分时间,并想找出它花费这么多的原因。

4

1 回答 1

0

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

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

于 2012-06-21T13:10:34.593 回答