我有一个大的(numpy ndarray)对象,我想在完成Python扩展中的内存后立即释放它的内存(否则我很快就会用光内存)。我如何安全地做到这一点?
似乎在Python中,类似del arr
后跟gc.collect()
的方法可以工作,但是我不想等到函数返回。我还考虑过((PyObject*)arr)->ob_type->tp_dealloc((PyObject*)arr); Py_DECREF(arr)
直接调用析构函数,但这似乎很可能导致段错误,因为我不确定我是否拥有引用(我是从传递给我的元组中获取引用的)用作PyObject* args
)。
另一种选择可能是使用free
释放基础的C数组,将ndarray的数据指针替换为另一个指针,并相应地调整形状和其他ndarray成员。这感觉有点骇人听闻,但我正在浏览numpy C API,以查看是否确实可行。
任何提示将不胜感激。预先感谢。