我有一段生成数据的 C++ 代码。我想将数据公开给 Python。但这并不像听起来那么微不足道……
假设这个 C++ 编译成二进制文件 cppcode
。由于框架设置的方式复杂,我只能将代码运行为
./cppcode {command line arguments}
在 cppcode 内部,它生成我想从 Python 访问的数据。我知道我是否可以以某种方式将程序重写为
CppClass cpp;
cpp.run( args );
然后我可以用 Boost Python 包装 CppClass,构建一个实例,使用参数运行,并访问生成的数据。
但现在我只能将代码运行为 ./cppcode {命令行参数}
我不能只从 Python 中调用 ./cppcode
,因为在 ./cppcode 完成后,它的内存将被系统回收,我无法再从 Python 中看到它。有办法解决这个问题吗?
我能想到的是:(1)让./cppcode把数据转储到磁盘,让python读取。 (2) 将数据转储到标准输出并通过管道传输到 python 脚本中。但无论哪种方式,我都必须在 Python 中进行一些可能很慢的字符串解析。有办法绕过它吗?
最佳答案
您可以将 ccpcode 中的 JSON 格式的数据转储到磁盘上,然后只需使用 python 中的 simplejson 来解析它。这样您就不必自己编写任何解析器。
以下是 C++ JSON 模块的一些示例:https://stackoverflow.com/questions/245973/whats-the-best-c-json-parser
关于c++ - 将一段 C++ 代码包装成 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9586055/