我已經用C++編寫了一些物理模擬代碼,解析輸入文本文件是其瓶頸。作爲輸入參數之一,用戶必須指定一個數學函數,該函數在運行時將被多次評估。 C++代碼爲此提供了一些預定義的函數類(它們在數學方面實際上相當複雜)以及一些有限的解析能力,但我並不滿意這種構造。通過Python將C++對象傳遞給C++代碼?
我需要的是算法和函數評估都保持快速,所以將它們都保存爲編譯代碼(最好是數學函數作爲C++函數對象)是有利的。然而,我想將整個模擬與Python結合在一起:用戶可以在Python腳本中指定輸入參數,同時還可以在Python中實現存儲,結果(matplotlib)和GUI的可視化。我知道大部分時間,可以完成暴露C++類的工作,例如,與SWIG,但我仍然有一個關於在Python中解析用戶定義的數學函數的問題:
是否有可能以某種方式在Python中構造一個C++函數對象並將其傳遞給C++算法? E.g.當我在Python調用
f = WrappedCPPGaussianFunctionClass(sigma=0.5)
WrappedCPPAlgorithm(f)
,它會返回一個指向一個C++對象,然後將傳遞給C++程序需要這樣一個指針,或類似的東西......(不要問我有關內存管理在這種情況下,雖然:S)
的一點是,沒有回調應在算法進行到Python代碼。後來我想擴展這個例子,在Python一邊做一些簡單的表達式解析,例如函數的sum或product,然後返回一些像C++對象那樣的複合,解析樹,但是讓我們暫時保留基本的東西。
對不起,對於提前的建議和長期的帖子和thx。