【问题标题】:Embed a stateful Python script into C++ program using boost::python使用 boost::python 将有状态的 Python 脚本嵌入到 C++ 程序中
【发布时间】:2011-11-04 01:19:37
【问题描述】:

我有一个不断生成数据的 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 文档,但它们太大了,我无法消化。

感谢您的帮助。

【问题讨论】:

标签: c++ python boost boost-python


【解决方案1】:

有关如何执行 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    相关资源
    最近更新 更多