【发布时间】:2015-03-21 18:10:55
【问题描述】:
我正在为 C 类编写一个 python 包装器,并且我正在使用 PyMem_Malloc 分配内存,正如 here 所解释的那样
cdef class SomeMemory:
cdef double* data
def __cinit__(self, size_t number):
# allocate some memory (uninitialised, may contain arbitrary data)
self.data = <my_data_t*> PyMem_Malloc(number * sizeof(my_data_t))
if not self.data:
raise MemoryError()
然后我在另一个脚本中导入并使用该类:
import SomeMemory
sm = SomeMemory(10)
我现在想访问 self.data 的元素,但遇到了 2 个问题
- 如果我输入 self.data 并回车,ipython 内核会崩溃
- 如果我尝试循环访问自己的数据
喜欢:
for p in self.data:
print p
我收到 self.data 不可迭代的错误。
如何访问 self.data?我需要先将元素转换为 my_data_t 吗?
【问题讨论】:
标签: python c cython dynamic-memory-allocation custom-data-type