具有Numpy数组引用计数行为的Python类型扩展

时间:2017-07-13 17:55:59

标签: python arrays numpy reference-counting python-c-extension

我正在为新的python Type编写C扩展。这种新类型的一个属性是Numpy数组,它来自传递给C扩展的外部数据。我像这样定义属性数组:

array = PyArray_SimpleNewFromData(numDims,shape,NPY_DOUBLE,[DATA POINTER])

,[DATA POINTER]是外部数据在内存中的位置。

然后我使用此命令设置数组属性" base"到包含属性的类型对象:

PyArray_SetBaseObject((PyArrayObject*)array,(PyObject*)[PY_TYPE OBJECT])

现在,据我所知,当我导入我的模块时,"键入" object.array的{​​{1}}。{/ p>

当我采用正常的ndarray并执行以下命令时,我会看到后续的行为:

numpy.ndarray

我希望我的数组属性增加和减少其基数的引用计数,就像>>>import numpy as np >>>import sys >>>base = np.array([1,2,3,4,5]) >>>sys.getrefcount(base) 2 >>>newArr = base >>>sys.getrefcount(base) 3 >>>del newArr >>>sys.getrefcount(base) 2 增加然后递减newArr的引用计数一样。但是,我的模块的行为如下:

base

有谁知道如何使用我的>>>from myModule import myObj >>>import sys >>>base = myObj() >>>sys.getrefcount(base) 2 >>>newArr = base.array >>>sys.getrefcount(base) 2 >>>del newArr >>>sys.getrefcount(base) 2 属性来改变我的基类型对象的引用计数?我最初的想法是使用这种numpy ndarray行为,但我愿意接受评论和建议!

0 个答案:

没有答案