Phase 20 of 25 · Topic 20.2

Cython: Compiling Python to Native C Extensions

1Concept

Cython translates Python code with C type declarations (`cdef int i`) into optimized C code, compiling into native shared libraries (`.so`/`.pyd`) that run up to 100x faster by bypassing PyObject overhead.

2Architecture Diagram

cython_module.pyx ---> Compiled via GCC/MSVC ---> Native Machine Code (.so / .pyd) [100x Speedup!]

3Code Example

Python 3.12
cython_sample = '''
# matrix_math.pyx
# Cython C-typed function
def fast_sum(int n):
    cdef int i
    cdef long long total = 0
    for i in range(n):
        total += i
    return total
'''
print("=== Cython Type-Annotated Implementation ===")
print(cython_sample.strip())

4Expected Output

=== Cython Type-Annotated Implementation ===
# matrix_math.pyx
# Cython C-typed function
def fast_sum(int n):
    cdef int i
    cdef long long total = 0
    for i in range(n):
        total += i
    return total

5Key Takeaways

  • `cdef` declares native C types (`int`, `double`, `struct`) eliminating PyObject wrapping.
  • `with nogil:` blocks release the GIL, enabling true multi-core CPU parallelism in C loops.
  • Cython integrates seamlessly with NumPy arrays using memoryviews (`int[:]`).