所以我目前的项目主要是用 Python 编写的,但我希望用 C++ 重写计算量最大的部分,以尝试提高性能。其中大部分我可以通过从 DLL 文件加载的简单函数来实现,但不是全部。我在 Python 中有一个多维数组,我想在 C++ 中执行操作(特别是 A* 寻路),但我不太确定如何转换它们,并且不断地将数据一次一个地发送到加载函数中似乎真的效率低下(数组的前两个维度只有几百个,函数需要一次处理数组中的数十个(如果不是数百个)元素)。
我的想法是在 C++ 中创建一个类,它在设置时创建自己的数组拷贝(性能不是那么重要的问题),并具有在数组上执行并将数据返回到主 Python 的方法程序。但是,我不确定如何做到这一点,即使这是处理此类事情的正确方法;这似乎意味着让 C++ 代码与主 Python 程序并行运行,直觉告诉我这是个坏主意。
除了如何在 Python 中通过 cTypes 加载简单函数外,我对集成 C++ 和 Python 知之甚少,所以我非常感谢这里的一些指示。请记住,我对 C++ 还比较陌生;我的大部分编程经验都在 Python 中。在这种情况下,将两者结合在一起的最佳方式是什么?
最佳答案
首先,当你在 Python 中处理多维数组时,你真的应该使用 NumPy .当您让 NumPy 进行数字运算时(使用数组算法而不是 Python for
循环),您的程序可能已经足够快了。
如果这还不够,请考虑使用 Cython 编写部分程序. Cython 还支持 NumPy 数组,并提供一种使用类似 Python 的语法编写 C 代码的轻松方式。
如果它真的必须是 C++,我强烈建议使用 Boost.Python .桥接 Python 和 C++ 从未如此简单。此外,Boost.Python 还支持 NumPy (boost::numeric::array
)。
关于c++ - 与 Python 一起运行 C++ 代码并与之交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6199872/