将Cpp代码与Python集成的最佳方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Cpp代码与Python集成的最佳方法相关的知识,希望对你有一定的参考价值。

我准备做一个机器人模拟器,除了控制器部分,模拟器大部分是用Python做的,控制器是用Cpp做的。Rough diagram of the simulator

在模拟器中,机器人模型将其状态(电机角度等)发送给一个python方法,该方法封装了所有的代码,根据学习到的策略生成所需的动作,机器人必须遵循。该方法使用openai Gym和机器学习代码。然后用Cpp制作的Controller部分得到所需的动作作为输入,并应该输出特定的命令,可以喂给机器人的电机。

问题是,Cpp代码与python的最佳使用方法是什么。我希望可以直接把Policy部分的输出送到Contoller,Controller输出电机指令。我只是想把Cpp控制器部分用在函数上,如果可能的话,就像单独的黑盒子一样。

Python是解释器语言,cpp是编译器语言。Google推荐了一些候选方案,比如使用Cpython,使用Bootst.python或者使用Pybind11。Cpp部分涉及到大量的 #include链接到控制器相关的库,并将在每个时间步长中重复使用。为了加快计算速度,我认为cpp部分应该只编译一次。

欢迎任何建议

答案

我决定用pybind11来封装cpp。

pybind11是相当通用的,它支持智能指针,而且,对于那些想使用特征或向量的人,pybind11分别将它们转换成python中的numpy和list。

以上是关于将Cpp代码与Python集成的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )(代码片段

将 Django 与 Ajax 库集成的“最佳”方式

将后端代码(Java、Python)与 HTML 集成 [关闭]

常用python日期日志获取内容循环的代码片段

如何将最佳就地与 bootstrap-datepicker 集成

将 StyleCop 与 TFS CI 集成的最佳方式