我想在一个三维的numpy数组中,在for循环内部释放GIL
cdef np.ndarray[DTYPE_t,ndim=3] array=np.ones((10000000,4,2))
cdef np.ndarray[DTYPE_t,ndim=2] sliced_array
cdef int i
cdef int N=array.shape[0]
for i in range(N):
sliced_array=array[i]
#perform computations on slice
当我查看Cython生成的html时,当它执行sliced_array=array[i]
时,它似乎在调用Python。我猜这是因为它推断出了另外两个维度的大小,但即使对第二和第三轴使用了类型化范围,这行代码仍然是黄色的!
sliced_array=array[i,typed_slice_x,typed_slice_y]
slice
是Python内置的函数,这可能会导致问题。 - Kirill Bulygin