python - 尝试从 C 调用 Python 函数时出现段错误

标签 python c function callback call

所以,我想从 C 调用一个 Python 回调函数。

在某个时候,函数被发送到 C 并像这样打包成一个元组

PyObject *userData = Py_BuildValue("Oi",py_callback,some_number);

在那个区域的某个地方,我也做 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);

最后一次调用抛出一个段错误。你知道为什么它会做这样的事情吗?

最佳答案

当从 Python C API 获得奇怪的行为时,始终值得仔细检查您是否正确管理全局解释器锁(又名“GIL”)的状态:http://docs.python.org/c-api/init.html#thread-state-and-the-global-interpreter-lock

关于python - 尝试从 C 调用 Python 函数时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5090585/

相关文章:

python - 从二进制文件中提取数据并对其进行排序

python - 如果我将实体两次放入 Google App Engine 数据存储区会怎样?

python - 在给定时间内禁用 django 表单字段

c - 如何从 C 中的函数返回字符数组?

python - urlparse 的奇怪行为

c - 如何将char数组中存储的int转换为int变量进行计算?

c - listen() 忽略积压值

c - 如何根据C编程语言标准初始化结构

mysql - 未知的 mysql 存储函数语法错误

function - 谷歌浏览器中的剪贴板功能是什么