2011-11-04 83 views
0

將有狀態的Python腳本嵌入到C++程序中我有一個C++程序可以持續生成數據。我有一個處理這些數據的python類。我想用這個python類來處理數據:當每次生成數據點時,我都可以使用這個python腳本來處理數據。但是這個Python腳本必須是「有狀態的」,即它應該能夠記住它在這個數據點之前做了什麼。使用boost :: 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是處理這個問題的好方法。任何人都可以勾畫出如何去做?我試圖閱讀助推文件,但他們太大,我不能消化。

我感謝您的幫助。

+3

Boost.Python的確實會幫你的:你可以導入一個Python模塊('.py'文件),創建一個實例。並將其保存在C++變量中,然後在需要時從C++調用方法。從教程開始:http://www.boost.org/doc/libs/1_47_0/libs/python/doc/tutorial/doc/html/index.html –

回答

0

有關如何執行Python腳本的基本信息:在操作用C Python對象

http://www.boost.org/doc/libs/1_47_0/libs/python/doc/tutorial/doc/html/python/embedding.html

詳情++

http://www.boost.org/doc/libs/1_47_0/libs/python/doc/tutorial/doc/html/python/object.html

許多升壓蟒涉及出口你的C++類到Python,但你沒有這樣做,所以你可以忽略它。

你可能會更好使用像SCXX

一個簡單的包裝

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