+ Répondre à la discussion Actualité déjà publiée
  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    mars 2013
    Messages
    3 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : mars 2013
    Messages : 3 017
    Points : 67 596
    Points
    67 596

    Par défaut Google propose en open source Grumpy, un runtime Python expérimental en Go

    Google propose en open source Grumpy, un runtime Python expérimental en Go
    qui vise à aider YouTube à surmonter les limitations de Python

    Le serveur front-end sur lequel s’appuie YouTube.com ainsi que les API YouTube sont principalement écrits en Python et servent des millions de requêtes par seconde. « Le front-end de YouTube tourne sur CPython 2.7, nous avons donc mis beaucoup d'efforts à améliorer l'exécution et à adapter notre application pour qu'elle fonctionne de façon optimale. Ces efforts ont porté beaucoup de fruits au fil des ans, mais nous nous heurtons toujours au même problème : il est très difficile de faire en sorte que les charges de travail simultanées aient un bon rendement sur CPython », a expliqué l'ingénieur YouTube Dylan Trotter dans un billet de blog.

    Bien entendu, pour y remédier, les ingénieurs ont cherché une alternative du côté d’autres environnements d’exécution Python. « Après quoi nous nous sommes posé cette question folle : et si nous implémentions un runtime alternatif optimisé pour le service en temps réel ? ». À ce moment là, Go semblait être le meilleur choix de plateforme « étant donné que ses caractéristiques opérationnelles cadrent avec notre cas d’utilisation (par exemple des threads légers) ». « Python dans Go semblait naturel et c’est ainsi que Grumpy est né », a-t-il continué.

    Trotter a décrit Grumpy comme étant un runtime Python expérimental pour Go. « Il traduit le code Python en programmes Go et ces programmes transpilés s'exécutent de façon transparente dans le runtime de Go. Nous avions besoin de prendre en charge une grande base de code Python existante, il était donc important d'avoir un haut degré de compatibilité avec CPython (quirks et le reste) ». L’objectif est de faire de Grumpy une alternative de runtime de remplacement pour tout projet purement Python.

    Deux choix de conception, qui ont eu un impact non négligeable, ont été fait :
    • tout d’abord, les ingénieurs ont renoncé au support des modules d’extension de C : cela signifie que Grumpy ne peut pas exploiter la richesse des extensions Python C existantes, « mais il nous a donné beaucoup de flexibilité pour concevoir une API et une représentation d'objet qui évoluerait pour les charges de travail parallèles. En particulier, Grumpy n'a pas de verrou d'interpréteur global et il tire parti du recyclage de la mémoire de Go pour la gestion de la durée de vie des objets au lieu de compter les références » ;

    • ensuite, Grumpy n’est pas un interpréteur : les programmes Grumpy sont compilés et liés comme n’importe quel autre programme Go. « L'inconvénient est une perte dans la flexibilité de développement et de déploiement, mais en contrepartie il offre plusieurs avantages. S’il crée des opportunités d'optimisation au moment de la compilation via une analyse de programme statique, le plus grand avantage est que l'interopérabilité avec le code Go devient très puissante et simple: Les programmes Grumpy peuvent importer des paquets Go comme les modules Python ! ».

    Trotter a averti que, bien que Grumpy vient d’être publié en open source, il en est encore au stade alpha : « la plupart des constructions de langage et de nombreux types intégrés de base fonctionnent comme on s'y attend [mais] il y a encore des trous à combler - de nombreux types intégrés manquent à l’appel, des méthodes et des attributs, des fonctions intégrées sont eux aussi absents et la bibliothèque standard est pratiquement vide ».

    Dans une réponse a une requête qui demandait si un support de Python 3 était prévu tandis que le projet gagne en maturité, Trotter a avancé sur GitHub que « nous avons une vaste codebase Python 2.7, raison pour laquelle nous nous sommes concentrés dessus. J’aimerais bien qu’il y ait un support de Python 3, c’est juste une entreprise fastidieuse », avant de suggérer à ceux qui sont intéressés par un support de Python 3 de faire un fork de Grumpy.

    L’une des raisons qui peut également avoir motivé au développement de Grumpy est la date de vie de Python 2.7 qui est prévue pour 2020. Au lieu de faire une mise à jour de son codebase Python 2.7 vers Python 3, Google semble planifier de convertir au moins une partie de son code Python en Go au cours des prochaines années.

    se rendre sur le dépôt GitHub de Grumpy

    Source : blog Google, date de fin de vie Python 2.7
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    décembre 2003
    Messages
    3 995
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2003
    Messages : 3 995
    Points : 1 984
    Points
    1 984

    Par défaut

    Ca veut dire quoi, un "runtime Python pour Go" ? C'est runtime Python écrit en Go, c'est ça ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    mai 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : mai 2015
    Messages : 6
    Points : 21
    Points
    21

    Par défaut Runtime ... ou bien Transpileur ?

    Est ce que l'on peut parler de runtime Python écrit en go, si ce que fait réellement Grumpy est de prendre un code Python 2.7 (uniquement) pour le convertir, puis le compiler comme une source Go classic ?
    Pour moi sa ressemblerait plus à ce que fait un transpileur en travaillant sur une conversion Source à Source.
    Mais sa c'est si j'ai bien compris l'article ...

  4. #4
    Membre du Club

    Inscrit en
    janvier 2011
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : janvier 2011
    Messages : 24
    Points : 45
    Points
    45
    Billets dans le blog
    1

    Par défaut

    1) J'aimerais bien voir un benchmark contre du python 3.6 (le GIL a été retravaillé de mémoire et c'est plus rapide maintenant)
    2) J'aimerais aussi beaucoup voir un autre contre pypy (on sait tous que CPython est gourmand et que pypy est plus rapide au long terme)
    3) J'aimerais enfin aussi beaucoup voir un benchmark contre Cython qui offre aussi de l'optimisation...

    Bref, je pense que google a déjà fait tous ces tests (ce serait con de réinventer la roue non ? )... Mais je trouve un peu facile de faire un comparatif sur une version de python obsolète... ok, encore de vieux module pas encore porté en python 3 (comme google-apputils ? tient donc...)
    http://py3readiness.org/

    Bref... Rappelons que le go a été développé par google, donc le choix de la solution n'est évidemment pas objectif...

    Ensuite, effectivement, si ça compile en Go, ce n'est pas vraiment un runtime, c'est plutôt un transpileur comme mentionné dans un autre commentaire... Et ça se rapproche beaucoup de cython du coup.

    Néanmoins, python a besoin d'un certain niveau d'introspection, et ce n'est pas faisable dans tous les langage donc j'imagine que ça doit quand même embarquer un interpréteur à la volée, donc certainement qu'il y a aussi un runtime.

    Bref... Quoi qu'il en soit, tant que ça exécute du python, ça me dérange pas trop, ça fait juste un autre concurrent pour pousser à booster les performances

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/10/2011, 13h19
  2. Réponses: 13
    Dernier message: 14/03/2011, 13h49
  3. Réponses: 3
    Dernier message: 12/11/2010, 19h55
  4. Réponses: 0
    Dernier message: 21/07/2009, 16h00
  5. Réponses: 0
    Dernier message: 21/07/2009, 16h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo