【发布时间】:2010-02-09 18:04:13
【问题描述】:
我有一个间歇性错误导致我的 Python 模块崩溃,我假设这是因为在 c 代码中没有正确获取引用计数而发生内存错误。我有一些代码可以在随机时间从远程位置获得响应。根据收到的数据,它需要更新我应该可以在 Python 中访问的数据变量。实现这一目标的最佳方法是什么?以下代码大部分时间都在运行,并且在运行时可以正常工作,但如果不正常运行,则会导致 Python 崩溃(打开 Visual Studio 调试框)。谢谢。
if (event == kResponseEvent) {
list = PyList_New(0);
for (i = 0; i < event->count; i++) {
PyList_Append(list, Py_BuildValue("{s:i, s:s}",
"id", event->id,
"name", event->name));
}
PyModule_AddObject(module, "names", list);
}
【问题讨论】:
-
我将此作为评论而不是答案发布,但我普遍认为将 C 部分编译为共享库并使用 ctypes 比使用扩展库更易于管理。
-
谢谢 - 我会研究这个,特别是因为我比 C 更精通 Python。
-
Cython 是为 C 库提供 Python 绑定的更巧妙的选择。