失败与无关
cython.boundscheck。
边界检查只是检查您是否尝试访问不存在的数组元素。例如,如果您有一个大小为4的数组并尝试访问元素5-
boundscheck(True)它将给您一个Exception,
boundscheck(False)它会导致未定义的行为(可能导致分段错误)。
编译失败的原因是另一个:您不能创建具有动态长度的静态数组!需要在编译时知道元素的数量,这只是c强制执行的(我想)。
但是,您可以定义
r在编译时已知:
DEF r=4cimport cython@cython.boundscheck(False)def boundtest(): cdef double l[r]
但是,您可以简单地创建一个NumPy数组并将其存储在memoryview变量中:
cimport cythonimport numpy as np@cython.boundscheck(False)def boundtest(): cdef int r=4 cdef double[:] l = np.empty(r, dtype=np.double)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)