ile paralel olarak bir liste üzerinde yineleme Cython'da bir (Python) listesi üzerinde nasıl paralel yineler? görünüşte GiL olmadan paralel bir bölümü herhangi bir Python nesne ile çalışamaz, çünkü bu derleyici hataları bir sürü verirCython
def sumList():
cdef int n = 1000
cdef int sum = 0
ls = [i for i in range(n)]
cdef Py_ssize_t i
for i in prange(n, nogil=True):
sum += ls[i]
return sum
:
Error compiling Cython file:
------------------------------------------------------------
...
ls = [i for i in range(n)]
cdef Py_ssize_t i
for i in prange(n, nogil=True):
sum += ls[i]
^
------------------------------------------------------------
src/parallel.pyx:42:6: Coercion from Python not allowed without the GIL
Error compiling Cython file:
------------------------------------------------------------
...
ls = [i for i in range(n)]
cdef Py_ssize_t i
for i in prange(n, nogil=True):
sum += ls[i]
^
------------------------------------------------------------
src/parallel.pyx:42:6: Operation not allowed without gil
Error compiling Cython file:
------------------------------------------------------------
...
ls = [i for i in range(n)]
cdef Py_ssize_t i
for i in prange(n, nogil=True):
sum += ls[i]
^
------------------------------------------------------------
src/parallel.pyx:42:6: Converting to Python object not allowed without gil
Error compiling Cython file:
------------------------------------------------------------
...
ls = [i for i in range(n)]
cdef Py_ssize_t i
for i in prange(n, nogil=True):
sum += ls[i]
^
------------------------------------------------------------
src/parallel.pyx:42:11: Indexing Python object not allowed without gil
Bu hemen kullanışlı olmayabilir uint8_t
ctypedef unsigned char ama hiç D denediniz mi? C sözdizimi ve listeler üzerinde paralel yineleme gibi şeyler (D dizileri veya aralıkları) aşinaysanız MATLAB içinde yapmak kadar kolay. Buradaki örneğe bir bakın: [std.parallelism] (http://dlang.org/phobos/std_parallelism). Bir Python arka planından gelmeyi çok kolay buldum. –
@mattyTpain Asla denemedim D, bir göz atacaklar. – clstaudt
@mattyTpain D ile deney yapıldı, pythonic sözdizimini beğendi. Ama burada karşılaştığım bir konu: http://stackoverflow.com/questions/17837098/parallel-iterators-in-the-d-language – clstaudt