42 votes

PyPy: De quoi parle-t-on?

Note: Le titre est volontairement provocateur (pour vous faire cliquer sur elle et que vous voulez fermer-vote de la question) et je ne veux pas avoir l'air préoccupé.

J'ai été à la lecture et à l'audition de plus en plus sur PyPy. C'est comme un graphique linéaire.

  • Pourquoi est-PyPy de si spécial? Autant que je sache, les implémentations de la dynamique des langues écrits dans la langue elle-même ne sont pas une chose très rare, ou je ne suis pas arriver quelque chose?

  • Certains parlent même de PyPy "l'avenir" [python], ou de voir une sorte de profonde potentiel dans cette mise en œuvre. Quel est exactement le sens de cela?

47voto

user137673 Points 867

La bonne chose à prendre en compte lorsque l'on parle de PyPy projet est qu'il vise à réellement apporter deux éléments: le premier est le compilateur JIT générateur. Oui, générateur, ce qui signifie qu'ils sont la mise en œuvre d'un cadre pour l'écriture des implémentations de très dynamique des langages de programmation, tels que Python. Le second est le test de ce cadre, et est la PyPy de l'interpréteur Python de mise en œuvre.

Maintenant, il y a plusieurs réponses à la question pourquoi PyPy est si spécial: le projet de développement est en cours d'exécution à partir de 2004, qui a commencé comme un projet de recherche plutôt que d'une entreprise, reimplements Python en Python, met en œuvre un compilateur JIT en Python, et peut se traduire RPython (code Python avec certaines limitations pour le cadre pour être en mesure de traduire ce code à C) de binaires compilés.

La version actuelle de PyPy est 99% compatible avec Disponible la version 2.5, et peut fonctionner à la Django, Tordus, et de nombreux autres programmes Python. Il y a une limite de ne pas être en mesure d'exécuter existant Disponible C extensions, mais c'est aussi abordé avec cpyext module dans PyPy. C compatibilité de l'API est possible et, dans une certaine mesure déjà mise en œuvre. JIT est aussi très réelle, voir ce pystone comparaison.

Avec Disponible:

Python 2.5.5 (r255:77872, Apr 21 2010, 08:44:16) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from test import pystone
>>> pystone.main(1000000)
Pystone(1.1) time for 1000000 passes = 12.28
This machine benchmarks at 81433.2 pystones/second

Avec PyPy:

Python 2.5.2 (75632, Jun 28 2010, 14:03:25)
[PyPy 1.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
And now for something completely different: ``A radioactive cat has 18
half-lives.''
>>>> from test import pystone
>>>> pystone.main(1000000)
Pystone(1.1) time for 1000000 passes = 1.50009
This machine benchmarks at 666625 pystones/second

De sorte que vous pouvez obtenir presque 10x plus rapide en utilisant simplement PyPy sur certains calculs!

Donc, comme PyPy projet est à maturation lente et offrant certains avantages, il attire de plus l'intérêt de personnes essayant de résoudre des problèmes de vitesse dans leur code. Une alternative à la PyPy est unladden avaler (un projet Google), qui vise à accélérer Disponible de la mise en œuvre en utilisant LLVM JIT capacités, mais les progrès sur unladden avaler a été ralenti car le développeur nécessaires pour faire face à des bugs dans LLVM.

Donc, pour résumer, je suppose que PyPy est considéré l'avenir de Python car c'est en séparant la langue de la spécification de VM mise en œuvre. Fonctionnalités introduites dans, par exemple. stackless Python, pourrait être mise en œuvre dans PyPy avec très peu d'effort supplémentaire, car c'est juste à modifier le langage de spécification et de vous garder le code partagé le même. Moins de code, moins de bugs, moins de la fusion, en moins d'effort.

Et par l'écriture, par exemple, un nouveau shell bash mise en œuvre dans RPython, vous pourriez obtenir un compilateur JIT pour gratuit et de vitesse beaucoup de scripts shell linux sans réellement l'apprentissage de toute lourde JIT connaissances.

22voto

Luis Points 161

Permet de la voir de cette façon... Supposons que vous souhaitez mettre en place votre propre langage dynamique, et que vous voulez le faire rapidement. Vous avez deux options: la dure et pypy.

À la dure, il faut écrire votre interprète en c, puis de mettre en place une équipe commune d'enquête à la main, également en c, en utilisant un mélange de très compliqué techniques d'une telle méthode-jit, filetés-jit, traçage jit, polymorphe inline caches, invariant de boucle de mouvement, etc, etc... a Passé plusieurs années de réglage et si vous persévérez beaucoup et que vous n'abandonnez pas, vous pouvez vous retrouver avec une dynamique rapide de la langue mise en œuvre.

Ou, vous pouvez utiliser la pypy cadre. Cela signifie que, de la rédaction de votre interpréteur python au lieu de c (en fait, il serait rpython, plus limité sous-ensemble de python qui peut être compilé en c). Une fois que vous avez écrit votre interprète, pypy va générer automatiquement une équipe commune d'enquête pour gratuit. Et vous êtes essentiellement fait.

Ça sonne bien, hein?

10voto

Isaac Points 6327

La bonne chose à propos de PyPy (en plus d’être rapide et écrit en RPython (un sous-ensemble du langage Python) donc fondamentalement amorcé, c’est qu’il peut fournir un JIT ( compilateur juste-à-temps) créé automatiquement pour tout programme écrit en PyPy: le rend idéal pour mettre en œuvre, rapidement, votre propre langage et qu'il soit assez rapide.

Lire la suite ici

5voto

gomad Points 794

Sans oublier qu'ils ont récemment dépassé la vitesse de CPython sur certains tests. Voir leur blog, je pense. Je ne peux pas l'atteindre d'ici:

http://morepypy.blogspot.com/

4voto

Xiong Chiamiov Points 1734

Comme la plupart d'entre nous conviennent qu'il est plus facile d'écrire en Python qu'en C, un interpréteur Python écrit en Python (enfin techniquement, RPython) devrait pouvoir être modifié beaucoup plus facilement et avec moins de bogues que CPython.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X