有没有办法手动减少Python中对象的引用计数?

时间:2013-07-18 19:59:34

标签: python c reference reference-counting

我正在使用一个存在一些内存问题的C库。我已经确定有时它会过早地减少引用计数,导致段错误,并设法通过保持对象列表来扩大引用计数来解决这个问题。另一方面,我还确定了引用计数过高的特定情况。有没有办法解决这些情况,从Python代码,有目的地减少引用计数?

我知道这是hackish,绝不是干净的代码或任何东西,但我必须以某种方式处理有缺陷的C库,而且似乎这可能比找出C代码中的问题更容易(幸运的是它是开源的,修复它,然后在我必须支持的所有平台上重新编译它。

1 个答案:

答案 0 :(得分:8)

通过ctypes使用Py_DecRef

import ctypes

_decref = ctypes.pythonapi.Py_DecRef
_decref.argtypes = [ctypes.py_object]
_decref.restype = None

_decref(a_python_object)