我有一个在Linux2.6上运行的应用程序,它实际上控制着一个机器人。我已经编写了一个c++基础设施和应用程序接口,允许用户用c++为机器人编写一个"Mainloop“。函数签名是RobotRunLoop(const Robot &robot)。Robot类提供了所需的所有API。当前系统在编译时设置环境,然后调用RobotRunLoop。我希望能够用python而不是c++来编写“主循环”。因此,基本上c++启动时会调用python主循环,然后它将使用提供的api回调到c++来控制机器人。
我假设我可以用Python语言用一个类似的robot对象创建一个类似的RobotRunLoop,它包含到c++ apis的钩子。我希望能够将其编译成二进制文件,然后可以在机器人上运行,就像纯c++版本一样。
这样做的动机是能够实验机器学习模型,并以实验的方式更容易地接近。最终目标是在c++基础设施上运行TensorFlow或类似的包
这有可能吗?如果python代码使用其他包怎么办?我是使用cython还是pybind11 (两者似乎都不是我想要的)?
谢谢你的帮助
发布于 2020-02-28 14:08:58
您可以这样做,请参阅关于extending and embedding的Python文档。但更“标准”的方法将适用于extend Python, not embed it。
您将创建包装Robot类的Python模块(使用特定于python的C API编译共享对象)。我会考虑使用pybind11或swig来帮助实现这一点。您可以在加载模块或(最好)创建类的实例时运行C++初始化代码。
https://stackoverflow.com/questions/60444836
复制相似问题