2017-02-09 4 views
0

Ich versuche, eine Schleife mit Prange parallelisieren:Cython Prange nicht mit Fatal Python Fehler: PyThreadState_Get: keine aktuellen Thread

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) 

Dies ist jedoch nicht mit: Fatal Python Fehler: PyThreadState_Get: keine aktuellen Thread

Was ist der Grund für dieses Verhalten?

Vielen Dank!

+0

Es gibt ein paar Fragen mit ähnlichen Fehlern (zB http://stackoverflow.com/questions/35640529/what-does-fatal-python-error-pythedreadstate-get-no-current-thread-mean) und sie implizieren das Sie haben wahrscheinlich eine andere Python-Bibliothek mit der von Ihnen verwendeten verbunden. – DavidW

Antwort

0

Ok es herausgefunden:

Die implizite Konvertierung von np.ndarray nicht funktioniert; Ich löste es mit einem zusätzlichen Memoryview Slice.

Verwandte Themen