Python 从C调用Scipy的最佳实践

Python 从C调用Scipy的最佳实践,python,c,scipy,Python,C,Scipy,我已经编写了一些C代码来调用scipy函数。正文(包括变量声明和使用EXIT FAIL表示消息和清理步骤)是: PyObject *module_name, *module = NULL; PyObject *funct = NULL; PyObject *output = NULL; int j; double dInVal, dOutVal; Py_Initialize(); module_name = PyString_FromString("scipy.stats"); modul

我已经编写了一些C代码来调用scipy函数。正文(包括变量声明和使用EXIT FAIL表示消息和清理步骤)是:

PyObject *module_name, *module = NULL;
PyObject *funct = NULL;
PyObject *output = NULL;
int  j;
double dInVal, dOutVal;

Py_Initialize();

module_name = PyString_FromString("scipy.stats");
module = PyImport_Import(module_name);
Py_DECREF(module_name);
if (!module)
    EXIT FAIL

funct = PyObject_GetAttrString(module, "beta");
if (!funct)
    EXIT FAIL
Py_DECREF(module);

for (j=0; j<=10; j++)
{
    dInVal = (double)j/10.0;

    output = PyObject_CallMethod(funct, "ppf", "(f,f,f)", dInVal, 50.0, 50.0);
    if (!output)
        EXIT FAIL

    dOutVal = PyFloat_AsDouble(output);
    Py_DECREF(output);
    printf("%6.3f %6.3f\n", dInVal, dOutVal);
}

Py_DECREF(funct);
Py_Finalize();
PyObject*module\u name,*module=NULL;
PyObject*funct=NULL;
PyObject*输出=NULL;
int j;
双瓣,双瓣;
Py_初始化();
module_name=PyString_FromString(“scipy.stats”);
module=PyImport\u Import(模块名称);
Py_DECREF(模块名称);
如果(!模块)
退出失败
funct=PyObject_GetAttrString(模块,“beta”);
if(!funct)
退出失败
Py_DECREF(模块);
对于(j=0;j