用Python函数扩展C++的性能

2024-04-26 18:19:12 发布

您现在位置:Python中文网/ 问答频道 /正文

<>我有一个C++应用程序。为了通过脚本给用户更多的动态控制,我选择在代码中嵌入一些python。FI,我的用户不热衷于学习和编写任何C++,所以共享LIB是不可能的。C++代码将在运行时调用Python中的用户定义函数。你知道吗

例如:用户将编写以下python函数。当然,在实践中,用户提供的函数定义比简单的add要复杂一些。你知道吗

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

C++代码使用以下函数调用UsRead。我需要使用不同的(a,b)集合多次运行evalUserFunc。这种方法与调用硬编码C++函数相比有多慢?我看到一个.pyc在执行时生成。是不是有些类似于A的东西?所以在C++中?先谢谢你。你知道吗

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;
}

Tags: 函数代码用户定义resfloatpyobjectpb