【发布时间】:2018-01-02 02:11:47
【问题描述】:
我知道在 cython 中我不能 cdef 循环内的数组,我必须在循环之前这样做。如果在循环内我将在循环外初始化的数组设置为在每次迭代时的大小差别很大,会发生什么?
想象一下这样的事情:
cdef int i
cdef int [:] A
for i in range(100):
A = np.zeros(np.random.randint(10, 1000), dtype=np.int32)
A 的大小在每次迭代中会有很大差异。这会导致任何类型的内存问题吗?当我通过循环时,有人可以解释一下内存中到底发生了什么吗?如果这是有问题的,还有其他选择吗?谢谢
【问题讨论】:
-
我建议将此循环放在调用 Python 代码中,并使用 2d
A数组调用 Cython 函数。在处理A时,专注于提高速度。像这样创建A并没有利用 Cython 的编译。
标签: python memory memory-management memory-leaks cython