【发布时间】:2013-05-08 20:03:23
【问题描述】:
我正在使用通过 f2py(版本 2)编译的 Fortran (gfortran 4.4.7) 编写的 Python (2.7.2) 扩展。
我可以使用cProfile 分析 Python 部分,但结果没有提供有关 Fortran 函数的任何信息。相反,时间归因于调用 Fortran 函数的 Python 函数。
我已为我构建的所有 Fortran 对象启用“-pg -O”标志,以及在 f2py 调用中通过以下方式创建共享对象:f2py --opt="-pg -O" ...
非常感谢任何有关如何获取 Fortran 信息的提示。
如果有人使用类似的设置,使用不同的分析器,我也会感兴趣。
【问题讨论】:
-
FWIW,我停止使用 f2py 是因为这个原因......很难进去看看 Fortran 代码中发生了什么。问题是 Fortran 代码是用 C 代码包装的,进一步混淆了情况。
-
也许你应该尝试一下 python 的方式:将测试例程放在 python 模块的
if __name__=="__main__":部分是一个好习惯。所以我建议编写一个单独的 Fortran 程序来单独分析这部分。 -
Fortran 函数调用显示为
<ipython-input-51-f4bf36c6a947>:84(<module>)。确实,您无法确定正在调用哪个模块,但它给了您一个想法。另一种方法是将其包装到 Python 函数中,然后查看 Python 函数的时序。 -
@ilciavo 这可能是最好的答案。你介意让它成为一个答案吗?我可能会接受它(考虑到这个问题已经开放的时间;-))。
标签: python fortran profiler f2py cprofile