7

我正在使用通过 f2py(版本 2)编译的 Fortran(gfortran 4.4.7)编写的 Python(2.7.2)扩展。

我可以用 来分析 Python 部分cProfile,但结果没有提供有关 Fortran 函数的任何信息。相反,时间归因于调用 Fortran 函数的 Python 函数。

我已经为我构建的所有 Fortran 对象启用了“-pg -O”标志,以及在 f2py 调用中通过以下方式创建共享对象:f2py --opt="-pg -O"...

任何有关如何获取 Fortran 信息的提示都非常感谢。

如果有人使用类似的设置,使用不同的分析器,我也会感兴趣。

4

3 回答 3

1

看看 python 扩展分析器是的

于 2014-08-07T20:02:22.233 回答
1

Fortran 函数调用显示为:

<ipython-input-51-f4bf36c6a947>:84(<module>). 

我知道,您无法确定正在调用哪个模块,但至少这给了您一个想法。

另一种方法是将其包装到 Python 函数中,然后查看 Python 函数的时序。

于 2016-06-26T06:42:40.020 回答
0

此工作流程似乎运行良好:

    1. 使用callgrind分析您的代码(这会生成一个类似于 callgrind.out.27237 的文件):

valgrind --tool=callgrind python my_python_script_calling_f2py_functions.py arg1 arg2

gprof2dot -f callgrind callgrind.out.27237 > callgrind.dot

dot -Tjpg callgrind.dot -o callgrind.jpg

于 2017-07-10T09:08:59.243 回答