1

背景:
我的程序目前在 Python 中组装数组。这些数组连接到前端 UI,因此具有交互元素(即数组元素中的用户指定值)。然后将这些数组保存到 .txt 文件中(取决于它们以后的用途)。然后,用户必须离开 Python 程序并运行一个单独的 Fortran 脚本,该脚本基于 Python 输出文件模拟系统。虽然这最多只需要几分钟,但理想情况下,我希望在不离开 Python UI 的情况下自动化该过程。

组装数组 (Python) ->编辑数组 (Python) ->导出到文件 (Python)
->导入文件 (Fortran) ->运行模拟 (Fortran) ->将结果导出到文件 (Fortran)
->将文件导入 UI,显示图形 (Python)

问题:
这可能吗?自动化此过程的选项有哪些?我可以完全删除重复的文件导出/导入吗?

编辑: 我还应该提到 fortran 脚本使用 Lapack,我不知道这是否有所作为。

4

2 回答 2

4

您不必使用文本文件将数组传递给 Fortran 代码。如果将 Fortran 代码的入口点创建为子例程,则numpy可以使用f2py. f2py如果您自己添加标签,您应该知道这一点。只需使用众多教程中的任何一个,例如https://github.com/thehackerwithin/PyTrieste/wiki/F2Pyhttp://www.engr.ucsb.edu/~shell/che210d/f2py.pdf

返回的方法是相同的,Fortran 代码只是用结果填充任何intent(out)orintent(inout)数组和变量。

于 2014-01-19T10:53:49.953 回答
2

我喜欢 Python+Fortran 堆栈。:)

当需要 Python 前端和 Fortran 引擎之间的密切通信时,一个不错的选择是使用 Python 中的subprocess模块。不是将数组保存到文本文件,而是将它们保存为数组。然后,您将作为 Python 脚本中的子进程执行 Fortran 引擎。您将通过管道将 Python 数组导入 Fortran 引擎,然后将结果通过管道输出以进行显示。

此解决方案将需要将 Python 和 Fortran 代码中的文件 I/O 更改为写入和读取管道(在 Python 端)以及从/到标准输入和输出(在 Fortran 端),但实际上这不是太多的工作。

祝你好运!

于 2014-01-19T22:12:12.350 回答