首页 > 解决方案 > 使用 spyder 进行 Python 分析:成分的时间不等于函数的总时间

问题描述

我正在使用 Spyder IDE 分析我的 python 代码。

正如您在下面的屏幕截图中看到的那样, _get_loglik_seq函数执行需要 1.20 分钟 = 80 秒。但是,构成此功能的各种功能/过程的时间如下:solve_EV= 29.78c_get_gamma秒,= 10.12 秒,norm= 6.57 秒,outer= 4.70 秒,<method dot ...:2.17 秒,所有其他:<1 秒。

如果将这些时间相加,结果将是大约 54 秒,远小于 80 秒。

这怎么可能?是探查器错误还是我错过了什么?谁能推荐一个用于 Python 代码分析的好工具?(我正在使用 Mac OS)

谢谢,米哈伊尔

在此处输入图像描述

标签: pythonprofiling

解决方案


原因如下:

总时间 = 函数的执行时间,包括所有子函数。

本地时间 = 没有子函数的函数的执行时间。

因此,如果一个函数p调用子函数s1, s2, s3, 那么:

ToTtime(p)=ToTtime(s1)+ToTtime(s2)+ToTtime(s3)+Localtime(p),

大致成立。


推荐阅读