python - 如何访问用 Python 编写的 FORTRAN 函数?

标签 python object compilation fortran

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

我见过允许从 Python 访问 FORTRAN 子例程的“f2py”,以及将 python 脚本编译为可执行文件的 py2exe。 “py2f”有什么东西吗?可以将 Python 脚本编译为目标文件吗?然后我可以将它与 FORTRAN 代码链接起来。

例如,将“mypython_func.py”视为包含函数的 Python 脚本,将“mainfortran.f”视为调用 Python 函数的主程序 FORTRAN 代码。我想要: 从“mypython_func.py”编译为“mypython_func.o”,从“mainfortran.f”编译为“mainfortran.o”(>> gfortran -c mainfortran.f),然后链接这些文件(>> gfortran -c mainfortran. o mypython_func.o -o myexec.exe)。这样的事情可能吗?

感谢您的宝贵时间和帮助。

文斯

最佳答案

不要浪费大量时间编译和翻译。这样做。

  1. Fortran 第 1 部分程序编写了一个文件供 Python 执行。写入标准输出。调用这个F1

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

  3. Fortran 第 2 部分程序从标准输入读取内容文件。这些是 Python 计算的结果。

连接它们

F1 | python p.py | F2

你不需要重新编译任何东西。另请注意,所有三个同时运行,这可能是一个相当大的加速。

Python的中间位应该是这样的。

import sys
import my_python_module
for line in sys.stdin:
    x, y, p, q = map( float, line.split() )
    print ("%8.3f"*6) % ( x, y, z, p, q, my_python_module.some_function( x, y, p, q ) )

以 Fortran 友好格式读取 stdin 和写入 stdout 的函数的简单包装器。

关于python - 如何访问用 Python 编写的 FORTRAN 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2357227/

相关文章:

javascript - 将对象插入数组

javascript - console.log 是否调用对象的 toString 方法?

compilation - Lapack 的 dgesv 编译但 dgesvxx 不

python - 从数据框中获取由逗号分隔的值的计数

python - 使用 kwargs 在字典中添加键和值

javascript - 将 Canvas 缓存在对象中(在内存中)

c++ - 如何修复错误 "clang: error: linker (via gcc) command failed with exit code 1 (use -v to see invocation)"?

c++ - 使用cygwin编译c++代码的问题

javascript - 将大型 XML 文件转换为关系数据库

python - 我可以(/是否有意义)创建一个 pandas 数据框来保存自定义类实例?