f2py的 `-DF2PY_REPORT_ATEXIT` 标志不起作用

编程语言 2026-07-08

我正在使用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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章