2015-07-02 20 views
19

Warum verwenden Leute nicht einfach die kompilierte Python-Datei, wenn sie Optimierung benötigen? Dann muss der Code nicht interperetiert und dann kompiliert werden.Warum sagen Leute Python ist langsam, weil es interpretiert wird? Es hat .pyc files

Gibt es etwas, das mir fehlt? Es scheint mir ein einfaches Problem zu sein.

+9

Python kompiliert zu Bytecode, der dann interpretiert wird. Dieser Bytecode wird in Pyc-Dateien zwischengespeichert und automatisch verwendet. Es ist die Interpretation, die hier "langsam" ist. –

+3

Es gibt andere Lösungen wie zB einen [JIT Compiler] (https://en.wikipedia.org/wiki/Just-in-time_compilation). [PyPy] (http://pypy.org/) macht das. –

+3

Die Leute sagen, es ist langsam, weil es so eine hohe Sprache ist. –

Antwort

34

Ich glaube, das ist genug, um Ihr Missverständnis zu korrigieren.

Ein Programm wird nicht schneller ausgeführt, wenn es aus einer .pyc- oder .pyo-Datei gelesen wird, als wenn es aus einer .py-Datei gelesen wird. Das einzige, was bei .pyc- oder .pyo-Dateien schneller ist, ist die Geschwindigkeit, mit der sie geladen werden.

Quelle: https://docs.python.org/2/tutorial/modules.html#packages

+0

Aber jede Bytecode-abhängige Sprache wird normalerweise (etwas) langsamer sein als eine optimierte Routine, die entwickelt wurde, um den Befehlssatz einer bestimmten Hardware zu nutzen. Wird der Unterschied tatsächlich von Bedeutung sein? Natürlich nicht. Die Portabilität der Verwendung von Bytecode gleicht den Leistungsverlust (im Vergleich zu dem nativen, optimierten Befehlssatz) mehr als aus. – sfdcfox

+15

@sfdcfox Es gibt kein "natürlich nicht" darüber. Ob die Geschwindigkeit zählt oder nicht, hängt davon ab, was Sie tun. –

+2

@sfdcfox Versuchen Sie, groß angelegte Physiksimulationen in einer interpretierten Sprache auszuführen und versuchen Sie es dann erneut in einer kompilierten Sprache. Beginnen Sie mit dem interpretierten Code - Sie haben genügend Zeit, um den kompilierten Code zu schreiben, auszuführen und die Daten zu analysieren, bevor der interpretierte Code abgeschlossen ist. – tpg2114

11

Python selbst interpretiert, wenn es von einer pyc-Datei gelesen hat. Wie bereits in der this Antwort erwähnt, beschleunigen pyc-Dateien nur das Programmstart, nicht die Ausführung. Befehle, die in Pyc-Dateien gespeichert werden, sind keine Maschinencodes, sondern nur Befehle auf Python-Ebene, die ohnehin vom Python-Interpreter interpretiert werden. Wenn Sie andererseits ein in C geschriebenes Programm verwenden, besteht die ausführbare Datei eines solchen Programms aus Maschinencodes, die direkt von der CPU "interpretiert" werden.