Willkommen bei Cython!
Cython ist ein Python-Compiler, der das Schreiben von C-Erweiterungen für Python so einfach macht wie Python selbst. Cython basiert auf Pyrex, unterstützt jedoch innovativere Funktionen und Optimierungen.
Cython übersetzt Python-Code in C/C++-Code, unterstützt aber zusätzlich den Aufruf von C-Funktionen und die Deklaration von C-Typen für Variablen und Klassenattribute. Dadurch kann der Compiler sehr effizienten C-Code aus Cython-Code generieren.
Dies macht Cython zur idealen Sprache zum Umschließen externer C-Bibliotheken und für schnelle C-Module, die die Ausführung von Python-Code beschleunigen.
- Offizielle Website: https://cython.org/
- Dokumentation: https://docs.cython.org/
- Github-Repository: https://github.com/cython/cython
- Wiki: https://github.com/cython/cython/wiki
Cython hat auf PyPI etwa 30 Millionen Downloads pro Monat. Sie können das Cython-Projekt über Github Sponsors oder Tidelift unterstützen .
Installation:
Wenn Sie bereits einen C-Compiler haben, führen Sie einfach den folgenden Befehl aus:
pip Cython installieren
Andernfalls lesen Sie die Installationsseite.
Lizenz:
Das ursprüngliche Pyrex-Programm wurde „frei von Einschränkungen“ lizenziert (siehe unten). Cython selbst ist unter der freizügigen Apache-Lizenz lizenziert.
Siehe LICENSE.txt.
Mitwirkender:
Möchten Sie zum Cython-Projekt beitragen? Hier finden Sie Hilfe für den Einstieg.
Unterschiede zu anderen Python-Compilern
Cython wurde Anfang der 2000er Jahre als Projekt gestartet und hat die meisten anderen Versuche, statische Compiler für die Python-Sprache zu erstellen, überlebt.
Ähnliche Projekte, die heute relevant sind, sind:
- PyPy, eine Python-Implementierung mit einem JIT-Compiler.
- Vorteile: JIT-Kompilierung mit Laufzeitoptimierungen, vollständig sprachkompatibel, gute Integration mit externem C/C++-Code
- Nachteile: Nicht-CPython-Laufzeit, relativ große Ressourcennutzung der Laufzeit, eingeschränkte Kompatibilität mit CPython-Erweiterungen, nicht offensichtliche Leistungsergebnisse
- Numba, eine Python-Erweiterung, die einen JIT-Compiler für eine Teilmenge der Sprache bietet, basierend auf der LLVM-Compiler-Infrastruktur (wahrscheinlich am besten bekannt für seinen
clang
C-Compiler). Es zielt hauptsächlich auf numerischen Code ab, der NumPy verwendet.- Vorteile: JIT-Kompilierung mit Laufzeitoptimierungen
- Nachteile: eingeschränkte Sprachunterstützung, relativ große Laufzeitabhängigkeit (LLVM), nicht offensichtliche Leistungsergebnisse
- Pythran, ein statischer Python-zu-C++-Erweiterungscompiler für eine Teilmenge der Sprache, der hauptsächlich auf numerische Berechnungen abzielt. Pythran kann (und ist wahrscheinlich am besten) als zusätzliches Backend für NumPy-Code in Cython verwendet werden.
- mypyc, ein statischer Python-zu-C-Erweiterungscompiler, basierend auf dem statischen Python-Analysator mypy. Wie der reine Python-Modus von Cython kann mypyc PEP-484-Typanmerkungen nutzen, um Code für statische Typen zu optimieren.
- Vorteile: gute Unterstützung für Sprache und PEP-484-Eingabe, gute Typinferenz, angemessene Leistungssteigerung
- Nachteile: keine Unterstützung für Low-Level-Optimierungen und -Typisierung, eigensinnige Interpretation des Python-Typs, eingeschränkte Python-Kompatibilität und Selbstbeobachtung nach der Kompilierung
- Nuitka, ein statischer Python-zu-C-Erweiterungscompiler.
- Vorteile: hohe Sprachkompatibilität, angemessene Leistungssteigerung, Unterstützung für statische Anwendungsverknüpfung (ähnlich wie cython_freeze, aber mit der Möglichkeit, Bibliotheksabhängigkeiten in einer eigenständigen ausführbaren Datei zu bündeln)
- Nachteile: Keine Unterstützung für Optimierungen und Eingaben auf niedriger Ebene
Im Vergleich zum oben Gesagten bietet Cython
- schnelle, effiziente und hochgradig konforme Unterstützung für fast alle Python-Sprachfunktionen, einschließlich dynamischer Funktionen und Selbstbeobachtung
- volle Laufzeitkompatibilität mit allen noch verwendeten und zukünftigen Versionen von CPython
- „Einmal generieren, überall kompilieren“ C-Code-Generierung, die reproduzierbare Leistungsergebnisse und Tests ermöglicht
- Anpassung der C-Kompilierungszeit an die Zielplattform und Python-Version
- Unterstützung für andere C-API-Implementierungen, einschließlich PyPy und Pyston
- nahtlose Integration mit C/C++-Code
- breite Unterstützung für manuelle Optimierung und Feinabstimmung bis zur C-Ebene
- eine große Benutzerbasis mit Tausenden von Bibliotheken, Paketen und Tools
- fast zwei Jahrzehnte Fehlerbehebung und statische Codeoptimierungen
Holen Sie sich den vollständigen Quellverlauf:
Beachten Sie, dass Cython früher das vollständige Versionskontroll-Repository in seiner Quelldistribution auslieferte, dies jedoch aus Platzgründen nicht mehr tut. Um den vollständigen Quellverlauf aus einem heruntergeladenen Quellarchiv zu erhalten, stellen Sie sicher, dass Git installiert ist, gehen Sie dann in das Basisverzeichnis der Cython-Quelldistribution und geben Sie Folgendes ein:
Repo machen
Das Folgende ist von Pyrex:
Dies ist eine Entwicklungsversion von Pyrex, einer Sprache zum Schreiben von Python-Erweiterungsmodulen.
Weitere Informationen finden Sie unter:
- Doc/About.html für eine Beschreibung der Sprache
- INSTALL.txt für Installationsanweisungen
- USAGE.txt für Gebrauchsanweisungen
- Demos für Anwendungsbeispiele
Kommentare, Vorschläge, Fehlerberichte usw. sind herzlich willkommen!
Urheberrecht: Pyrex ist frei von Einschränkungen. Sie dürfen modifizierte Versionen verwenden, weiterverbreiten, modifizieren und verteilen.
Die neueste Version von Pyrex finden Sie hier.
Greg Ewing, Informatikabteilung
Universität Canterbury
Christchurch, Neuseeland
Ein Bürger von NewZealandCorp, einer hundertprozentigen Tochtergesellschaft von USA Inc.