Bellek görüntülemeleri kullanarak standart quicksort'u cython'da uygulamaya çalışıyorum.Cython bellek görüntülemesi hatası: Bellek görünümü için geçersiz indeks belirtildi
Error compiling Cython file:
------------------------------------------------------------
...
cdef void _quicksort(double[:] l, double start, double stop):
cdef double pivot, left, right, tmp
if stop - start > 0:
pivot = l[start]
^
------------------------------------------------------------
quicksort_cython_opt3.pyx:9:23: Invalid index for memoryview specified
birisi bana söyleyebilir ne yanlış yapıyorum:
def quicksort_cython(double[:] l):
_quicksort(l, 0, len(l) - 1)
cdef void _quicksort(double[:] l, double start, double stop):
cdef double pivot, left, right, tmp
if stop - start > 0:
pivot = l[start]
left = start
right = stop
while left <= right:
while l[left] < pivot:
left += 1
while l[right] > pivot:
right -= 1
if left <= right:
tmp = l[left]
l[left] = l[right]
l[right] = tmp
left += 1
right -= 1
_quicksort(l, start, right)
_quicksort(l, left, stop)
Ben memoryview erişimiyle ilgili çoklu hataları olsun standart setup.py
dosya ve python setup.py build_ext --inplace
komutla derleme sırasında, Ancak: İşte benim kodudur? Ayrıca Cython için yeni olduğum için herhangi bir performans geliştirici ipuçları takdir edilecektir .. Teşekkürler!
Evet .. int'ye geçiş bu kodu derlememi sağladı. Ayrıca çalışmamı sağlamak için geçirilen numpy dizisindeki türü belirtmem gerekiyordu: 'np.array (l, dtype = np.int32)'. Belki de belliydi ama bunu belgelemede bulamadım, teşekkürler. –
Sevindim Yardımcı olabilirim! – mwm314