Multithreading Cython prange失败,出现致命的Python错误:PyThreadState\u Get:没有当前线程
我正在尝试将一个循环与prange并行:Multithreading Cython prange失败,出现致命的Python错误:PyThreadState\u Get:没有当前线程,multithreading,parallel-processing,cython,Multithreading,Parallel Processing,Cython,我正在尝试将一个循环与prange并行: cdef fun(double [::1] someData)) nogil: #direct call to a external c function C_function(&someData[0]) #.... def parallelEvaluate(np.ndarray[np.double_t] largerArray): #.... cdef np.ndarray[np.double_t] array
cdef fun(double [::1] someData)) nogil:
#direct call to a external c function
C_function(&someData[0])
#....
def parallelEvaluate(np.ndarray[np.double_t] largerArray):
#....
cdef np.ndarray[np.double_t] array
cdef np.ndarray[np.int] arbitraryIndices
for n in prange(loopLength, nogil=true):
with gil:
arbitraryIndices = # ... indices dependent on n
array = np.copy( largerArray[ arbitraryIndices] ) # copy of a non cont. array to the cont. 'array'
fun(array)
但是,这在以下情况下失败:
致命的Python错误:PyThreadState\u Get:没有当前线程
这种行为的原因是什么
谢谢大家! 好吧,我想出来了:
np.ndarray的隐式转换不起作用;我用一个额外的memoryview片段解决了这个问题。有几个问题有类似的错误(例如),它们意味着您可能已经针对一个不同的Python库与您使用的Python库进行了链接。