我使用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
并使用牛顿方法进行数值优化。我相信目标函数的梯度计算大部分时间花在了我身上,并希望找出它花费这么多的原因。
答案 0 :(得分:0)
cProfile为每个函数提供两次:在此函数中花费的总时间,包括子函数和在此函数中花费的总时间(不包括子函数)。要检测瓶颈,您通常会根据这两个指标考虑最大的成本。
在你的情况下,我会寻找调用len的函数,看看我是否可以将值存储在某处以避免不必要的调用。