Introduction
Python est apprécié pour sa simplicité, mais il peut être lent pour certaines tâches, notamment les calculs lourds, les boucles complexes, ou le traitement de données intensif. Pour résoudre cela sans quitter l’univers Python, vous pouvez utiliser Cython, un sur-ensemble de Python qui permet de compiler du code en C et de booster significativement les performances.
Dans cet article, vous allez découvrir ce qu’est Cython, comment l’installer, l’utiliser pour accélérer votre code Python, et comment compiler un module Cython pour l’intégrer à vos projets.
1. Qu’est-ce que Cython ?
Cython est un langage basé sur Python, mais enrichi avec des types C statiques. Il permet de :
- Compiler du code Python en C pour le rendre plus rapide
- Gagner en performance sans réécrire votre code en C/C++
- Accéder à des bibliothèques C facilement
2. Installer Cython
pip install cython
def carre(int n):
return n * n
Note : ici, int n
indique un type C pour la variable n
.
4. Créer le fichier de compilation setup.py
from setuptools import setup
from Cython.Build import cythonize
setup(
ext_modules = cythonize("calcul.pyx")
)
5. Compiler le fichier Cython
Dans le terminal :
python setup.py build_ext --inplace
Cela crée un fichier .pyd
(Windows) ou .so
(Linux/macOS), que vous pouvez importer comme un module Python classique.
6. Utiliser le module compilé
Dans un script Python :
from calcul import carre
print(carre(10)) # Résultat : 100
7. Comparaison de performance
Voici un exemple de boucle optimisée :
Version Python :
def somme_python(n):
total = 0
for i in range(n):
total += i
return total
Version Cython (somme.pyx
) :
def somme_cython(int n):
cdef int total = 0
cdef int i
for i in range(n):
total += i
return total
➡ En compilant cette fonction, vous constaterez des performances 2 à 50 fois plus rapides selon les cas.
8. Intégrer dans un projet existant
Vous pouvez convertir petit à petit des modules .py
en .pyx
sans toucher au reste du code Python.
9. Trucs et astuces pour aller plus loin
- Utilisez
cdef
pour définir des variables C internes - Typage fort = meilleure performance
- Utilisez des boucles for optimisées (avec types C)
- Evitez les types Python dynamiques (
list
,dict
, etc.) si possible
10. Bonus : compiler automatiquement avec Jupyter
Dans un notebook :
%load_ext cython
%%cython
def carre(int n):
return n * n
➡ Vous pouvez directement utiliser du Cython dans des notebooks Jupyter pour tester vos optimisations.
Conclusion
Cython est une solution puissante pour accélérer vos programmes Python, sans quitter l’écosystème que vous connaissez. En ajoutant simplement quelques annotations de types, vous pouvez transformer votre code Python en code C rapide et tirer parti de performances proches de celles du C natif. Un excellent outil pour les calculs scientifiques, les jeux, ou tout programme nécessitant de la vitesse.