如何从用Python编写的FORTRAN中访问函数?

2024-10-02 08:19:41 发布

您现在位置:Python中文网/ 问答频道 /正文

在FORTRAN中有没有使用python函数的方法?我得到了一个包含一些函数的python脚本,我需要从FORTRAN代码访问这个函数。在

我见过“f2py”,它允许从Python访问FORTRAN子例程,以及py2exe,它将Python脚本编译为可执行文件。有什么“py2f”的吗?Python脚本可以编译成对象文件吗?然后我可以把它和FORTRAN代码连接起来。在

例如,考虑“mypython”_功能复制'作为包含函数的Python脚本,'mainfortran.f'作为调用Python函数的主程序FORTRAN代码。我想: 从'mypython_功能复制'编译到'mypython\u func.o',从'mainfortran.f'编译到'mainfortran.o'(>;>;gfortran-c mainfortran.f),然后链接这些文件(>;>;gfortran-c mainfortran.o mypython\u func.o-omyexec.exe). 这样的事有可能吗?在

谢谢你的时间和帮助。在

文斯


Tags: 文件方法函数代码gt功能脚本例程
2条回答

@S.Lott的解决方案就是出路。但是为了回答您的问题-是的,可以从Fortran中调用Python。我首先使用Cython的C API公开Python,然后使用iso_c_binding模块创建这些C函数的Fortran接口,最后从Fortran调用它们。它非常重,在大多数实际问题中都不值得(使用管道方法),但它是可行的(它对我有效)。在

不要浪费大量的时间编译和翻译。做这个。在

  1. Fortran第1部分程序为Python编写了一个文件。写信给stdout。叫这个F1

  2. Python读取文件,进行Python计算,将响应写入Fortran文件。叫这个P。

  3. Fortran第2部分程序从stdin读取一个文件。这些是Python计算的结果。

连接他们

F1 | python p.py | F2

你不会重新编译任何东西。还要注意,这三者同时运行,这可能是一个相当大的加速。在

Python的中间部分应该是这样的。在

^{pr2}$

函数的一个简单包装器,它以Fortran友好的格式读取stdin并写入stdout。在

相关问题 更多 >

    热门问题