使用boost :: python将有状态的Python脚本嵌入到C ++程序中

时间:2011-11-04 01:19:37

标签: c++ python boost boost-python

我有一个不断生成数据的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是处理这个的好方法。任何人都可以勾画出如何做到这一点吗?我试图阅读提升文件,但它们对我来说太大了,无法消化。

感谢您的帮助。

1 个答案:

答案 0 :(得分: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

这样的简单包装器可能会更好

http://davidf.sjsoft.com/mirrors/mcmillan-inc/scxx.html