bas*_*ibe 1 c python function callback call
所以,我想从C调用一个Python回调函数.
在某些时候,函数被发送到C并打包成这样的元组
PyObject *userData = Py_BuildValue("Oi",py_callback,some_number);
Run Code Online (Sandbox Code Playgroud)
在那个地区的某个地方,我Py_INCREF(py_callback)也是.
在程序的某个稍后时间,我想调用该函数
PyObject *py_callback;
int some_number;
PyArg_ParseTuple((PyObject*)userData,"Oi",&py_callback,&some_number); // returns true
PyObject *py_result = PyObject_CallFunctionObjArgs(py_callback,
/* ... */
NULL);
Run Code Online (Sandbox Code Playgroud)
并且最后一次调用会引发分段错误.你有什么想法,为什么会做这样的事情?
当从Python C API获得奇怪的行为时,总是值得仔细检查您是否正确管理全局解释器锁(也称为"GIL")的状态:http://docs.python.org/c-api/ init.html#线程状态和最全球翻译锁