与Python一起运行C++代码并与之交互
Running C++ code alongside and interacting with Python
所以我目前的项目主要是用Python编写的,但我希望用C++重写计算成本最高的部分,以尝试提高性能。我可以通过从DLL文件加载的简单函数来实现大部分功能,但不是所有功能。我在Python中有一个多维数组,我想在C++中对它执行操作(特别是a*路径查找),但我真的不知道如何翻译它们,并且不断地将数据一次一个地发送到加载的函数中似乎真的很低效(数组的前两个维度都在几百以内,函数一次需要处理数组中的几十个元素,如果不是几百个的话)。
我的想法是在C++中有一个类,它在设置时创建自己的数组副本(在那里性能没有那么大问题),并具有对数组执行并将数据返回到主Python程序的方法。然而,我不确定如何做到这一点,即使这是做这件事的正确方式;这似乎意味着让C++代码与主Python程序并行运行,直觉告诉我这是个坏主意。
除了如何在Python中通过cTypes加载简单函数之外,我对集成C++和Python不太了解,所以我非常感谢这里的一些指针。请记住,我对C++还比较陌生;我的大部分编程经验都是用Python编写的。在这种情况下,将两者结合在一起的最佳方式是什么?
首先,当您在Python中使用多维数组时,您应该真正使用NumPy。当您让NumPy进行数字运算(使用Array算术而不是Python for
循环)时,您的程序可能已经足够快了。
如果这还不够,可以考虑使用Cython编写部分程序。Cython还支持NumPy数组,并提供了一种使用类似Python语法编写C代码的轻松方法。
如果真的必须是C++,我强烈建议使用Boost.Python。连接Python和C++从来没有这么容易。此外,Boost.Python还支持NumPy(boost::numeric::array
)。
看看Cython。
- Qt VTK交互风格的信号到小部件
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 在Linux for Windows上编译C++代码时出错
- Qt Quick-如何仅从c++代码与qml属性交互
- 我如何在此代码中使用键盘交互
- 生成代码以与不需要重新编译的正在运行的 cpp 应用程序交互的好方法是什么?
- 与C++代码中的 qml 对象交互
- 打印代码 128 C 条形码通过与 OPOS 公共控件 1.8 交互C++代码
- c++代码能可靠地与其他c++代码交互吗?
- 必须所有与模板化类型交互的代码也使用模板
- Boost日志:日志设置文件和代码配置的交互
- 目标代码重定位和英特尔引脚交互
- 从c++代码与servlet交互
- 与Python一起运行C++代码并与之交互