1

我用 python 编写了一个代码,我有一个函数(f,用 Freefem++ 编写),输入来自 python 中的代码。问题是我不知道如何在我的 python 代码中调用用 freefem++ 编写的函数。

此代码在 python 中,函数“f”假定在 Freefem++ 中。

 for i in range (popsize):

         pop[i][N]=f(pop[i][0],pop[i][1])

先感谢您。

4

2 回答 2

0

Freefem++ 是用 C++ 编写的,据我所知,没有用 C++ 编写的 API 允许 Freefem++ 和 Python 之间的通信。

我的建议如下:

  1. 编写您的 FreeFem++ 代码并在您的代码中嵌入一个部分以将数据保存到临时文件中。也可以直接“计算”结果并使用该subprocess模块从 Python 读取标准输出。

  2. 从 python 调用你的 FreeFem 代码。假设代码名称为“simulation.edp”,然后从 python 中您可以将代码编写为:

import subprocess
dep_file_path="simulation.edp"
bashCommand = ["Freefem++",  edp_file_path]
process = subprocess.Popen(bashCommand, stdout=subprocess.PIPE)
output, error = process.communicate()
print(output)

这样,您应该能够通过执行 python 代码来读取 FreeFem 模拟的输出。

  1. 使用 python 读取 FreeFem++ 代码的输出(使用 subprocess 模块的 std 输出或“simulation.edp”输出的文件内容),然后处理它。

您可以通过在 C++ 中工作来尝试更直接的方法,但由于缺乏关于开发 FreeFem++ 内核的良好文档,这条路径要困难得多。在这里,您将找到一些示例,说明如何使用 FreeFem++ Link to Githb连接简单的 C++ 类。

于 2018-05-22T21:35:41.603 回答
0

AG 的答案很好,但我想说的是,您可以使用管道,这使您可以在不使用文件的情况下在两个程序之间进行通信,这是一个瓶颈。参见例如这里管道(维基百科)

于 2021-01-13T16:24:03.840 回答