Script "kompilieren"

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Krauzi
User
Beiträge: 77
Registriert: Montag 22. Oktober 2007, 18:06
Kontaktdaten:

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
Benutzeravatar
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.
Krauzi hat geschrieben:(außer dem schutz des quellcodes)?
Nein, das erledigt kein Kompilat, schon gar kein byte-code Kompilat.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Krauzi hat geschrieben:ich wollte mal wissen, ob ein kompilierter python script schneller ausgeführt wird wie ein nicht kompilierter.
Ja, deswegen wird Python-Code zu Python-Bytecode kompiliert, der von der Python-VM dann ausgeführt wird.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

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
Antworten