Hallo,
ich wollte mal wissen, ob ein kompilierter python script schneller ausgeführt wird wie ein nicht kompilierter.
Falls das nicht der Fall ist, was bringt dann eigentlich kompilieren bei python scripts (außer dem schutz des quellcodes)?
MfG Krauzi
Script "kompilieren"
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Python wird per byte-code interpretiert in den jedes Programm kompiliert werden muss. Der Vorteil von `.pyc` Dateien ist, dass das Programm nicht neu kompiliert werden muss.
Nein, das erledigt kein Kompilat, schon gar kein byte-code Kompilat.Krauzi hat geschrieben:(außer dem schutz des quellcodes)?
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ja, deswegen wird Python-Code zu Python-Bytecode kompiliert, der von der Python-VM dann ausgeführt wird.Krauzi hat geschrieben:ich wollte mal wissen, ob ein kompilierter python script schneller ausgeführt wird wie ein nicht kompilierter.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ich würde die Frage ja mit Nein beantworten. Python(.exe) kann überhaupt nur kompilierten Quelltext interpretieren, weil es ein Bytecode-Interpreter ist. Technisch ist das Umwandeln von Quelltext in Bytecode zwar eine Kompilation, nicht aber in dem Sinn in dem der OP das wahrscheinlich meinte, also in der Art dass man Geschwindigkeitsvorteile durch einen (optionalen) Kompilationsschritt erreicht.
Jython übersetzt z.B. Python-Quelltext in Java-Bytecode, der dann von der Java-VM bei der Ausführung in Maschinensprache übersetzt wird. Das Google-Projekt "Unloaden Swallow" hat den Python-Interpreter zu gehackt, dass er Bytdecode für die LLVM erzeugt, der dann von dieser bei der Ausführung in Maschinensprache übersetzt wird. Wirklich schneller ist das aber beides nicht.
Stefan
Jython übersetzt z.B. Python-Quelltext in Java-Bytecode, der dann von der Java-VM bei der Ausführung in Maschinensprache übersetzt wird. Das Google-Projekt "Unloaden Swallow" hat den Python-Interpreter zu gehackt, dass er Bytdecode für die LLVM erzeugt, der dann von dieser bei der Ausführung in Maschinensprache übersetzt wird. Wirklich schneller ist das aber beides nicht.
Stefan