f2py的 `-DF2PY_REPORT_ATEXIT` 标志不起作用
我正在使用NumPy的 F2PY将一些Fortran代码编译成供Python使用,并且我正在尝试使用 -DF2PY_REPORT_ATEXIT 编译标志来测试F2PY生成的接口的性能。不幸的是,按照 DF2PY_REPORT_ATEXIT 标志运行代码并退出Python时没有输出。参考 NumPy文档 说明它可能并非在所有平台上都有效,但我在Rocky Linux上,因此原则上应该可以工作。这是一个常见问题吗?有没有标准的解决办法?
最小可运行示例
文件 add.f90:
subroutine add_xy(x,y,z)
integer, intent(in) :: x,y
integer, intent(out) :: z
z = x + y
end subroutine add_xy
编译命令:
$ f2py -m add -c add.f90 -DF2PY_REPORT_ATEXIT
文件 add.py:
import add
print(add.add_xy(2,3))
现在在终端中运行:
$ python add.py
5
输出将(至少在我的情况下)只是来自加法的 5,不会有任何F2PY报告。
解决方案
如果你想严格使用快速的 f2py -c 命令行实用工具,则必须利用底层Meson构建工具所遵循的全局环境变量:
# Pass the macro into the C flags used by Meson
CFLAGS="-DF2PY_REPORT_ATEXIT=1" f2py -m add -c add.f90
一旦编译完成,执行你的 python add.py 脚本将得到你计算的结果,并附上详细的内部微秒级性能遥测报告:
5
Performance of add:
f2py_call_clock: 0.000002 sec (1 calls)
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。