Ich habe ein Array, das die Summe der verschiedenen Dinge enthalten muss und daher möchte ich Reduktion für jedes seiner Elemente durchführen. Hier ist der Code:Reduktion von Array in Cython parallel
cdef int *a=<int *>malloc(sizeof(int) * 3)
for i in range(3):
a[i]=1*i
cdef int *b
for i in prange(1000,nogil=True,num_threads=10):
b=res() #res returns an array initialized to 1s
with gil: #if commented this line gives erroneous results
for k in range(3):
a[k]+=b[k]
for i in range(3):
print a[i]
Bis es mit gil der Code ist in Ordnung läuft gibt sonst falsche Ergebnisse. Wie mit Reduzierungen auf jedem Element des Arrays zu behandeln, ohne Gil zu verwenden Ursache Gil ich denke, wird blockieren andere Threads
Haben Sie 'cdef int k'? – Kevin
@Kevin Ja, ich tat –