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

Vin*_*ier 4 python fortran compilation object

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

我见过'f2py'允许从Python访问FORTRAN子程序,py2exe将python脚本编译成可执行文件.那'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).有可能这样吗?

感谢您的时间和帮助.

文斯

S.L*_*ott 6

不要浪费大量时间编译和翻译.做这个.

  1. Fortran Part 1程序为Python编写了一个东西文件.写到标准输出.叫这个F1

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

  3. Fortran Part 2程序从stdin读取一个东西的文件.这些是Python计算的结果.

连接他们

F1 | python p.py | F2
Run Code Online (Sandbox Code Playgroud)

你不会重新编译任何东西.还要注意,所有三个并发运行,这可能是一个相当大的加速.

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 ) )
Run Code Online (Sandbox Code Playgroud)

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