Frage

Von dem was ich habe auf Blogs gesehen und gelesen, ist PyPy ein sehr ehrgeiziges Projekt. Was gibt einige Vorteile, die sie auf den Tisch über seine Geschwister (CPython, Jython und Ironpython) bringen wird? Ist es Geschwindigkeit, Cross-Plattform-Kompatibilität (einschließlich mobilen Plattformen), die Fähigkeit, c-Erweiterungen ohne die GIL zu verwenden, oder ist dies eher eine technische Übung, was kann getan werden?

War es hilfreich?

Lösung

PyPy ist wirklich zwei Projekte:

  • Ein Interpreter Compiler Toolchain so dass Sie Dolmetscher in RPython (ein statisches Subset von Python) und haben plattformübergreifende Dolmetscher zusammengestellt eigenständige, für die JVM, für .NET (etc)
  • schreiben
  • Eine Implementierung von Python in RPython

Diese beiden Projekte ermöglichen viele Dinge.

  • Die Aufrechterhaltung Python in Python ist viel einfacher, als es in C beibehalten
  • Aus einer einzigen Code-Basis können Sie Python Interpreter erzeugen, die auf der JVM, .NET und Standalone laufen - anstatt mehr leicht inkompatiblen Implementierungen
  • mit
  • Ein Teil des Compiler-Toolchain enthält einen experimentellen JIT-Generator (jetzt in seiner fünften Inkarnation und wirklich beginnen, gut zu funktionieren) - die Ziel für eine JITed PyPy laufen viel schneller als CPython
  • Es ist viel einfacher mit Funktionen grundlegender Sprache zu experimentieren - wie die GIL entfernen, besser Garbage Collection, die Integration von stackless usw.

Es gibt also wirklich eine Menge Gründe für PyPy spannend werden, und es beginnt schließlich für alle seine Versprechen zu halten.

Andere Tipps

Das wichtigste Merkmal ist natürlich die JIT-Compiler. In CPython Dateien werden in Bytecode (.pyc) oder optimierte Bytecode (.pyo) zusammengestellt und dann interpretiert. Mit PyPy werden sie zu nativen Code kompiliert werden. PyPy umfasst auch Stackless Python Patches, einschließlich es beeindruckend Merkmale (Tasklet Serialisierung Licht Fäden usw.)

Im Fall, dass Python eine echte JIT Ich denke, es wird so schnell sein wie jede andere Implementierung.

Der Vorteil ist, dass es viel einfacher ist, um neue Funktionen zu implementieren. Man kann dies heute sieht, durch die Bibliothek zu beobachten. Oft Module in Python geschrieben wird und dann in C übersetzt.

  

Cross-Plattform-Kompatibilität

Ja

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top