🚀 Cython: C-Extensions for Python
Cython is a programming language that is a superset of Python, designed to give C-like performance with Python-like syntax. It allows you to compile Python code into C, which is then compiled into a Python extension module.
🧠 Why Cython?
- Speed: Can be 100x faster than pure Python for computational tasks.
- Static Typing: Optional static typing allows C-level optimizations.
- Interoperability: Easy to call C/C++ libraries.
🛠 Basic Example
Create a file named hello.pyx.
# hello.pyx
def say_hello_to(name):
print(f"Hello {name}!")
Create a setup.py to build it.
from setuptools import setup
from Cython.Build import cythonize
setup(
ext_modules = cythonize("hello.pyx")
)
Build it: python setup.py build_ext --inplace
Use it:
import hello
hello.say_hello_to("World")
⚡ Static Typing for Speed
The real power comes when you add types.
Pure Python (Slow):
def fib(n):
a, b = 0, 1
while b < n:
print(b, end=' ')
a, b = b, a + b
Cython with Types (Fast):
# fib.pyx
def fib(int n):
cdef int a = 0
cdef int b = 1
while b < n:
print(b, end=' ')
a, b = b, a + b
cdef: Declares C variables. These are not visible to Python code importing the module.cpdef: Creates a C function that also has a Python wrapper.
🔗 Wrapping C Libraries
Cython makes it easy to interface with external C libraries.
# cmath.pyx
cdef extern from "math.h":
double sin(double x)
def my_sin(x):
return sin(x)
📝 Summary
- ✅ Superset of Python: Most Python code is valid Cython code.
- ✅ Compilation: Translates to C, then compiles to machine code.
- ✅ Type Declarations:
cdefallows defining C types for massive speedups. - ✅ Bridge: The best way to write C extensions for Python.
Created with ❤️ by Pynfinity