Cython für C++: Komplettguide mit Beispielen
Willkommen bei PythonLib! Heute tauchen wir ein in die faszinierende Welt von Cython – einem mächtigen Werkzeug, das die Flexibilität von Python mit der Performance von C und C++ vereint. Falls du schon immer leistungsstarke Python-Erweiterungen in C++ schreiben wolltest, ohne die vertraute Python-Syntax zu verlassen, bist du hier genau richtig.
1. Was ist Cython und wozu dient es?
Cython ist eine kompilierte Programmiersprache, die eine Obermenge von Python darstellt. Sie ermöglicht es, Code zu schreiben, der in effizienten C/C++-Code übersetzt und anschließend in dynamische Bibliotheken (Python-Erweiterungen) kompiliert wird. Das Hauptziel von Cython ist es, Python-Programme zu beschleunigen und direkten Zugriff auf C/C++-Bibliotheken zu ermöglichen.
Warum ist das nötig? Python als interpretierte Sprache ist in puncto Performance oft unterlegen. Cython löst dieses Problem, indem es Folgendes ermöglicht:
- Kritische Codeabschnitte um das 10- bis 100-fache beschleunigen – durch statische Typisierung und Kompilierung.
- Vorhandene C/C++-Bibliotheken integrieren (z. B. OpenCV, NumPy, TensorFlow), ohne Wrapper in reinem C schreiben zu müssen.
- Hochperformante Python-Module erstellen für wissenschaftliches Rechnen, Datenverarbeitung, maschinelles Lernen und Spiele.
- Die vertraute Python-Syntax nutzen mit minimalen Änderungen, um C-Geschwindigkeit zu erreichen.
Cython ist besonders beliebt im wissenschaftlichen Python-Ökosystem (SciPy, scikit-learn, pandas), wo Performance entscheidend ist. Es wird auch in Web-Frameworks (z. B. uWSGI) und Spiele-Engines (Pygame) eingesetzt.
2. Cython installieren
Die Installation von Cython ist einfach und erfolgt über den Standard-Paketmanager pip. Für die Arbeit mit C++ benötigst du außerdem einen C++-Compiler (g++, clang++ oder MSVC).
# Cython installieren
pip install cython
# Für die Entwicklung ist auch setuptools hilfreich
pip install setuptools
# Installation überprüfen
python -c "import cython; print(cython.__version__)"
Hinweis: Wenn du Anaconda verwendest, ist Cython bereits vorinstalliert. Stelle sicher, dass ein C++-Compiler verfügbar ist:
- Linux:
sudo apt install g++ - macOS:
xcode-select --install - Windows: Installiere Build Tools for Visual Studio
3. Schnellstart: Minimales Arbeitsbeispiel
Wir erstellen eine einfache Cython-Erweiterung, die zwei Zahlen addiert. Das zeigt den grundlegenden Workflow: .pyx-Datei schreiben, setup.py erstellen und kompilieren.
Schritt 1: Datei hello.pyx erstellen
# hello.pyx
def add(int a, int b):
return a + b
Schritt 2: Datei setup.py erstellen
# setup.py
from setuptools import setup
from Cython.Build import cythonize
setup(
ext_modules=cythonize("hello.pyx", language="c++"), # language="c++" für C++
)
Schritt 3: Erweiterung kompilieren
python setup.py build_ext --inplace
Nach der Kompilierung erscheint eine Datei hello.cpython-3XX-*.so (oder .pyd unter Windows).
Schritt 4: Modul in Python verwenden
# test.py
import hello
print(hello.add(5, 3)) # Ausgabe: 8
Fertig! Du hast soeben deine erste Cython-Erweiterung in C++ erstellt. Im Hintergrund hat Cython C++-Code generiert, diesen kompiliert und eine dynamische Bibliothek erzeugt.
Auch in der Bibliothek
Caching in C++: Redis, Memcached und integrierte Lösungen
Bildverarbeitung in C# (.NET): Bibliotheken und Codebeispiele
Apache HttpClient für Java: Vollständige Anleitung mit Beispielen
FastEndpoints für C# (.NET): Komplettleitfaden mit Beispielen