Python中使用numpy/scipy的len()函数与cProfile结果。

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-numpyscipy 并采用牛顿法进行数值优化。我相信客观函数的梯度计算花费了我大部分时间,并希望找出原因,为什么花费如此之多。

1个回答

0

cProfile 为每个函数提供两个时间:包括子调用在内的该函数内所花费的总时间和不包括子调用在内的该函数内所花费的总时间。要检测瓶颈,通常需要根据这两个指标考虑成本最高的内容。

对于您的情况,我会查找频繁调用 len 函数的函数,看能否将其值存储在某个地方以避免不必要的调用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接