Python Py_initialize/Py_Finalize未使用numpy两次
在以下代码的第二次调用中,我的应用程序SEGFULT,因此我想我遗漏了一些东西:Python Py_initialize/Py_Finalize未使用numpy两次,python,c,numpy,Python,C,Numpy,在以下代码的第二次调用中,我的应用程序SEGFULT,因此我想我遗漏了一些东西: Py_Initialize(); pName = PyString_FromString("comp_macbeth"); pModule = PyImport_Import(pName); Py_DECREF(pName); if(pModule == NULL) { PyErr_Print(); Py_Finalize(); return; } pFunc = PyObject_Ge
Py_Initialize();
pName = PyString_FromString("comp_macbeth");
pModule = PyImport_Import(pName);
Py_DECREF(pName);
if(pModule == NULL) {
PyErr_Print();
Py_Finalize();
return;
}
pFunc = PyObject_GetAttrString(pModule, "compute");
/* pFunc is a new reference */
if (!pFunc || !PyCallable_Check(pFunc) ) {
PyErr_Print();
Py_Finalize();
return;
}
Py_Finalize();
comp_macbeth.py正在导入numpy。如果我删除numpy导入,一切都很好。这是一个numpy bug,还是我缺少了一些关于导入的信息?来自:
如果多次调用某些扩展的初始化例程,则它们可能无法正常工作;如果应用程序多次调用Py_Initialize()和Py_Finalize(),就会发生这种情况
显然,努比就是其中之一。另见Numpy讨论
只调用一次
Py\u Initialize()
,然后进行清理,这是最好的方法。(而且速度也应该更快!)我的模块初始化部分有这个,但是URL不再存在了。如果有帮助:
// http://numpy.scipy.org/numpydoc/numpy-13.html mentions this must be done in module init, otherwise we will crash
import_array();
我不需要多次初始化/完成,但我想检查我的理解是否正确