从python2.7调用freefem ++软件编写的函数

时间:2014-11-07 10:50:48

标签: python function interface call freefem++

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

这段代码在python中,函数" f",假设在Freefem ++中。

 for i in range (popsize):

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

提前谢谢。

2 个答案:

答案 0 :(得分:0)

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

我建议如下:

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

  2. 从python中调用FreeFem代码。假设代码名为“simulation.edp”,然后从python中编写代码:

  3. 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 ++代码的输出(使用子进程模块的std输出或“simulation.edp”输出的文件的内容)然后处理它。
    2. 你可以通过使用C ++来尝试更直接的方法,但由于缺乏关于FreeFem ++内核开发的良好文档,这条路径更难。在这里,您将找到一些如何使用FreeFem ++ Link to Githb连接简单C ++类的示例。

答案 1 :(得分:0)

AG 的回答很好,但我想说的是,您可以使用管道,它允许您在两个程序之间进行通信,而无需使用文件,这是一个瓶颈。参见此处的示例 Pipeline (Wikipedia)