【发布时间】:2013-06-09 03:37:20
【问题描述】:
我正在寻找将 python 嵌入到 fortran90 中的选项,以便将 python 功能添加到我现有的 fortran90 代码中。我知道可以通过使用 numpy 中的 f2py 使用 fortran90 扩展 python 来完成相反的操作。但是,我想在 fortran 中保留我的超级优化主循环并添加 python 来执行一些额外的任务/评估进一步的开发,然后才能在 fortran 中执行它,并且还可以简化代码维护。我正在寻找以下问题的答案:
1) 是否有一个已经存在的库,我可以从中将 python 嵌入到 fortran 中? (我知道 f2py 并且它以相反的方式进行) 2) 我们如何处理从 fortran 到 python 和返回的数据传输? 3)我们如何实现回调功能? (让我稍微描述一下这个场景......我在 Fortran 中有我的 main_fortran 程序,它在 python 中调用 Func1_Python 模块。现在,从这个 Func1_Python 中,我想调用另一个函数......比如说在 fortran 中的 Func2_Fortran) 4)在性能方面将python的解释器嵌入到fortran中会有什么影响......比如加载时间,运行时间,发送数据(双精度的大数组)等等。
非常感谢您的帮助!!
Edit1:我想通过添加更多关于我正在做的工作的信息来确定讨论的方向。我喜欢科学计算的东西。所以,我会在双精度的巨大数组/矩阵上做很多工作,并进行浮点运算。因此,除了 fortran 之外,几乎没有其他选择可以真正为我完成这项工作。我想在我的代码中包含 python 的原因是我可以在必要时使用 NumPy 进行一些基本计算,并以最小的努力扩展代码的功能。例如,我可以使用几个可用的库来链接 python 和其他一些包(比如使用 PyFoam 库的 OpenFoam)。
【问题讨论】:
-
如果你打算使用 sympy,check this
-
除非您正在执行字符串操作,否则 Fortran 可能比 Python 更快。