Zunächst einmal ist Python 3 (.x) eine Sprache, für die es eine beliebige Anzahl von Implementierungen geben kann. Okay, bis heute implementiert keine Implementierung außer CPython diese Versionen der Sprache. Aber das wird sich ändern (PyPy holt auf).
Um die Frage zu beantworten, die Sie stellen wollten: CPython, 3.x oder andere, enthält, hat und wird wahrscheinlich nie einen JIT-Compiler enthalten. Einige andere Python-Implementierungen (PyPy nativ, Jython und IronPython durch Wiederverwendung von JIT-Compilern für die virtuellen Maschinen, auf denen sie aufbauen) verfügen über einen JIT-Compiler. Und es gibt keinen Grund, warum ihre JIT-Compiler nicht mehr funktionieren würden, wenn sie Python 3-Unterstützung hinzufügen.
Aber während ich hier bin, möchte ich auch ein Missverständnis ansprechen:
Normalerweise ist ein JIT-Compiler das einzige, was die Leistung in interpretierten Sprachen verbessern kann
Das ist nicht richtig. Ein JIT-Compiler entfernt in seiner grundlegendsten Form lediglich den Interpreter-Overhead, der einen Teil der beobachteten Verlangsamung ausmacht, nicht jedoch die Mehrheit. Ein guter JIT-Compiler führt auch eine Reihe von Optimierungen durch, die den für die Implementierung zahlreicher Python-Funktionen im Allgemeinen erforderlichen Overhead beseitigen (indem Sonderfälle erkannt werden, die eine effizientere Implementierung ermöglichen). Beispiele hierfür sind dynamische Typisierung, Polymorphismus und verschiedene introspektive Funktionen.
Einfach implementieren a Compilers hilft dabei nicht. Sie benötigen sehr clevere Optimierungen, von denen die meisten nur unter ganz bestimmten Umständen und für ein begrenztes Zeitfenster gültig sind. JIT-Compiler haben es hier leicht, weil sie zur Laufzeit speziellen Code generieren können (das ist ihr springender Punkt), das Programm einfacher (und genauer) analysieren können, indem sie es während der Ausführung beobachten, und Optimierungen rückgängig machen können, wenn sie ungültig werden. Sie können im Gegensatz zu früheren Compilern auch mit Dolmetschern interagieren und tun dies häufig, weil dies eine vernünftige Entwurfsentscheidung ist. Ich denke, dies ist der Grund, warum sie in den Köpfen der Menschen mit Dolmetschern verbunden sind, obwohl sie unabhängig existieren können und existieren.
Es gibt auch andere Ansätze, um die Python-Implementierung zu beschleunigen, abgesehen von der Optimierung des Interpreter-Codes selbst - zum Beispiel das HotPy (2) -Projekt. Diese befinden sich jedoch derzeit in der Forschungs- oder Experimentierphase und müssen ihre Wirksamkeit (und Reife) für echten Code erst noch zeigen.
Und natürlich hängt die Leistung eines bestimmten Programms viel mehr vom Programm selbst ab als von der Sprachimplementierung. Die Sprachimplementierung legt nur eine Obergrenze fest, wie schnell Sie eine Abfolge von Vorgängen ausführen können. Im Allgemeinen können Sie die Programmleistung viel besser verbessern, indem Sie unnötige Arbeit vermeiden, dh das Programm optimieren. Dies gilt unabhängig davon, ob Sie das Programm über einen Interpreter, einen JIT-Compiler oder einen vorzeitigen Compiler ausführen. Wenn Sie möchten, dass etwas schnell ist, geben Sie sich keine Mühe, um eine schnellere Sprachimplementierung zu erreichen. Es gibt Anwendungen, die mit dem Aufwand an Interpretation und Dynamik nicht realisierbar sind, aber nicht so häufig sind, wie Sie denken (und häufig durch selektives Aufrufen von maschinencodekompiliertem Code gelöst werden).