我正在调试嵌入在C ++程序中的Python应用程序。
当我通过PyObject_GetAttrString
查询numpy数组属性并在之后很好地解除它(Py_DECREF
)时,我仍然看到引用计数增加。
参考计数I通过PyObject_CallObject(PySys_GetObject((char*)"gettotalrefcount"), NULL)
如果我用标准的python列表替换numpy数组,那么引用计数是稳定的。
我做的下一个简单测试是使用python调试版本:
Python 2.7.6 (default, Mar 22 2014, 23:07:03)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
[155099 refs]
>>> l = numpy.array([1,2])
[155102 refs]
>>> l
array([1, 2])
[155156 refs]
>>> l
array([1, 2])
[155207 refs]
>>> l
array([1, 2])
[155258 refs]
>>> l
array([1, 2])
[155309 refs]
>>> l
array([1, 2])
[155360 refs]
正如您所看到的那样,参考数量不断增加,这是我没想到/不理解的。
任何人都有线索?提前谢谢。