gpt4 book ai didi

python - 如何用 C++ 扩展 Python?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:51:12 29 4
gpt4 key购买 nike

我有执行以下操作的 Python 代码:

  1. 从模拟软件中获取优化问题。

  2. 使用多线程 IPOPT 算法解决了这个优化问题。

  3. 将2中得到的结果转换到另一个维度。

  4. 以图形的形式显示结果。

现在我已经用 C++ 编写了一个类来解决优化问题(第 2 点)以提高速度和其他一些原因,它从第 1 点(问题、约束等)获取输出并给出一个输出进一步传递到第 3 点(Python 中的函数)。

如何将从 1 中获取的这些变量传递给 2 中的 C++ 类,然后再传回 3 中的 Python 函数?以下是我正在尝试的:

我使用 SWIG 来生成包装文件。 SWIG 为 2.cpp2.h C++ 文件创建包装器的接口(interface)文件:

/* File: 2.i */
%module t2c_main
%{
#define SWIG_FILE_WITH_INIT
#include "../include/2.h"
%}
%include ../include/2.h

运行 SWIG 后,我得到了一个 Python 文件和一个 cxx 文件。现在我在使用这些文件时遇到了问题;如上所述,我需要传递变量。

最佳答案

传递变量的具体方式显然取决于数据的存储方式。不过,我们假设 t2c_main 模块包含一个方法 addDataPoint(int,int);

接下来你要做的是:

  • 将生成的 cpp 文件与您的 2.cpp 一起编译并链接到动态库中。
  • 如果生成的python文件名为t2c.py,将刚才编译的动态库重命名为_t2c.pyd(注意下划线,其实很重要)。
  • 在你的 python 代码中导入 t2c 模块

你现在应该可以做类似的事情了

t2c.addDataPoint(5,10)

在你的 python 代码中。

关于python - 如何用 C++ 扩展 Python?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28530879/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com