性能 - 使用Python函数扩展C ++

时间:2014-12-03 22:41:05

标签: python c++ embed

我有一个用C ++编写的主应用程序。为了通过脚本为用户提供更多动态控制,我选择在代码中嵌入一些python。仅供参考,我的用户并不热衷于学习和编写任何C ++,因此共享库是不可能的。 C ++代码将在运行时调用python中的用户定义函数。

Ex:用户会编写以下python函数。当然,在实践中,用户会提供比简单添加更复杂的功能定义。

def userAdd(a, b):
    return a+b

C ++代码使用以下函数来调用userAdd。我需要使用各种(a,b)集多次运行evalUserFunc。将此方法与调用硬编码C ++函数相比有多慢。我在执行时看到了.pyc。这有些类似于C ++中的.so吗?先感谢您。

float myClass::evalUserFunc(float a, float b)
{
    PyObject *pFunc, *pArgs;
    PyObject *pa, *pb, *pValue;
    int res = 0;
    if (_pModule != NULL) {
        pFunc = PyObject_GetAttrString(_pModule, 'userAdd');
        pArgs = PyTuple_New(2);
        pa = PyFloat_FromDouble(a);
        pb = PyFloat_FromDouble(b);
        PyTuple_SetItem(pArgs, 0, pa);
        PyTuple_SetItem(pArgs, 1, pb);
        pValue = PyObject_CallObject(pFunc, pArgs);
        res = PyFloat_AsDouble(pValue);
    }
    return res;
}

0 个答案:

没有答案