将一段C++代码封装到Python中

Wrapping a piece of C++ code into Python

本文关键字:封装 代码 Python C++ 一段      更新时间:2023-10-16

我有一段生成数据的C++代码。我想将数据公开给Python。但这并不像听起来那么微不足道。。。

假设这个C++编译成二进制文件cppcode。由于框架设置的方式很复杂,我只能将代码作为运行

./cppcode {command line arguments} 

在cppcode中,它生成了我想从Python访问的数据。我知道我是否能以某种方式将程序重写为

CppClass cpp; 
cpp.run( args );

然后,我可以用BoostPython封装CppClass,构建一个实例,使用参数运行,并访问generates中的数据。

但现在我只能以./cppcode {command line arguments} 的身份运行代码

我不能仅仅从Python调用./cppcode,因为在之后/cppcode完成,它的内存将被系统回收,我再也无法从Python中看到它了。有办法绕过这个吗?

我可以想到:(1)让/cppcode将数据转储到磁盘中并让python读取。(2)将数据转储至stdout并通过管道传输到python脚本中。但无论哪种方式,我都必须在Python中进行一些字符串解析,这可能会很慢。有办法绕过它吗?

您可以将ccpcode中的JSON格式数据转储到磁盘上,然后只需使用python中的simplejson进行解析。这样您就不必编写任何自己的解析器了。

以下是C++JSON模块的一些示例:https://stackoverflow.com/questions/245973/whats-the-best-c-json-parser