我想在一个三维纽比阵列的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时,它看起来像是在调用Python,当它执行sliced_array=array[i]
时,我想这是因为它推断了另外两个维度的大小,但即使在第二和第三个轴使用类型化范围时,这一行仍然是黄色的!在
与将内容声明为numpy数组相比,较新的memoryview语法的一个优点是,您可以在不使用GIL的情况下执行索引操作:
如果您将它们声明为
cdef np.ndarray
,那么您就无法轻松地避免需要GIL进行索引。在相关问题 更多 >
编程相关推荐