使用boost::python将有状态的Python脚本嵌入C++程序
我有一个C++程序,它不断生成数据。我有一个Python类来处理这些数据。我想用这个Python类来处理数据:每当生成一个数据点时,我就可以用这个Python脚本来处理它。但是,这个Python脚本必须是“有状态的”,也就是说,它应该能够记住在处理这个数据点之前做过的事情。
举个非常简单的例子,我的C++程序只是生成数字,而我的Python类计算这些数字的累积和:
Python:
class CumSum:
def addone(x):
self._cumsum += x;
print self._cumsum;
C++
[Somehow construct a CumSum instance, say c]
for (int i=0; i<100000; i++) {
int x = rand() % 1000;
[Call c.addone(x)]
}
我听说boost::python是处理这个问题的好方法。有没有人能简单描述一下怎么做?我试着看boost的文档,但对我来说实在太复杂了。
谢谢你的帮助。
1 个回答
0
如果你想了解如何运行你的Python脚本,这里有一些基本信息:
http://www.boost.org/doc/libs/1_47_0/libs/python/doc/tutorial/doc/html/python/embedding.html
如果你想深入了解如何在C++中操作Python对象,可以查看这个链接:
http://www.boost.org/doc/libs/1_47_0/libs/python/doc/tutorial/doc/html/python/object.html
Boost.Python大部分内容是关于如何把你的C++类导出到Python中,但如果你不需要这样做,可以忽略这些内容。
你可能会发现使用一个更简单的包装工具,比如SCXX,会更合适: