Dr. Stefan Behnel
(Cython Core-Entwickler, Consultant und Schulungsleiter)
Cython ist die Brücke zwischender Einfachheit von Python undder Performance von C/C++/Fortran.![]()
Cython ist die Brücke zwischender Einfachheit von Python undder Performance von C/C++/Fortran.![]()
Cython ist
"Wir schreiben C, damit ihr es nicht müsst!"
Version 0.17.x von Cython unterstützt:
Geplant für Version 0.18:
cdef add_one_2d(double[:,:] buf):
cdef size_t x,y
for x in xrange(buf.shape[0]):
for y in xrange(buf.shape[1]):
buf[x,y] += 1
cdef add_one_2d(double[:,:] buf):
...
def add_one_to_even_lines(double[:,:] buf):
add_one_2d(buf[:,::2])
cdef int[1:102:2,:] partial_view = exporting_object
ctypedef fused floating:
float
double
cdef add_one_2d(floating[:,:] buf):
cdef size_t x,y
for x in xrange(buf.shape[0]):
for y in xrange(buf.shape[1]):
buf[x,y] += 1
from cython.parallel cimport prange
def add_one_parallel(double[:,:] buf):
cdef size_t x,y
for x in prange(buf.shape[0], nogil=True):
for y in xrange(buf.shape[1]):
buf[x,y] += 1
Festlegung zur Compilezeit oder Laufzeit
prange(..., schedule="...")
Env-Variable OMP_SCHEDULE
static
dynamic
guided
from cython.parallel cimport prange
def parallel_sum(double[:] buf):
cdef size_t i
cdef double result = 0.0
for i in prange(buf.shape[0], nogil=True):
result += buf[i]
return result