我用 python 编写了一个代码,我有一个函数(f,用 Freefem++ 编写),输入来自 python 中的代码。问题是我不知道如何在我的 python 代码中调用用 freefem++ 编写的函数。
此代码在 python 中,函数“f”假定在 Freefem++ 中。
for i in range (popsize):
pop[i][N]=f(pop[i][0],pop[i][1])
先感谢您。
Freefem++ 是用 C++ 编写的,据我所知,没有用 C++ 编写的 API 允许 Freefem++ 和 Python 之间的通信。
我的建议如下:
编写您的 FreeFem++ 代码并在您的代码中嵌入一个部分以将数据保存到临时文件中。也可以直接“计算”结果并使用该subprocess
模块从 Python 读取标准输出。
从 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 模拟的输出。
您可以通过在 C++ 中工作来尝试更直接的方法,但由于缺乏关于开发 FreeFem++ 内核的良好文档,这条路径要困难得多。在这里,您将找到一些示例,说明如何使用 FreeFem++ Link to Githb连接简单的 C++ 类。
AG 的答案很好,但我想说的是,您可以使用管道,这使您可以在不使用文件的情况下在两个程序之间进行通信,这是一个瓶颈。参见例如这里管道(维基百科)