IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Expert éminent sénior

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2018
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2018
    Messages : 1 548
    Points : 125 220
    Points
    125 220
    Par défaut Les créateurs de Python dévoilent leurs plans d'accélération pour Python en le rendant 2 à 5 fois plus rapide
    Les créateurs de Python dévoilent leurs plans d'accélération pour Python,
    Qui promettent de le rendre 2 à 5 fois plus rapide sans casser aucun code existant

    Le langage de programmation Python dispose déjà de nombreux moyens de s'exécuter plus rapidement, qu'il s'agisse des runtimes d'exécution alternatifs comme PyPy ou de modules écrits en C/C++. Mais presque aucune de ces méthodes n'implique l'accélération de CPython lui-même – l'implémentation de référence de Python, écrite en C, qui est la version la plus largement utilisée du langage. Lors du Python Language Summit qui s'est tenu au PyCon 2021 la semaine dernière, le créateur du langage Python, Guido van Rossum, a dévoilé des plans à court et à long terme pour rendre Python plus rapide – d’un facteur de deux à cinq fois plus rapide, voire plus, tout en restant compatibles avec le code existant.

    Le langage de programmation est relativement lent dans son implémentation CPython par défaut, bien qu'il existe de nombreux moyens de le rendre plus rapide, notamment des alternatives axées sur les performances comme PyPy. Historiquement, van Rossum ne semblait pas se soucier des performances de Python, privilégiant la simplicité d'un compilateur moins bien optimisé. Mais le créateur du populaire langage de programmation Python a fait part de ses ambitions de le rendre 2 à 5 fois plus rapide, en remédiant à l'une des principales faiblesses de Python par rapport à des langages plus rapides comme le C++.

    Nom : p01.png
Affichages : 542267
Taille : 28,4 Ko

    Son manque de performance explique en partie pourquoi Python a gravité vers la science des données et l'apprentissage automatique, où de nombreuses charges de travail sont confiées aux GPU. L'autre raison de son essor dans ces domaines est la richesse des bibliothèques spécifiques, de NumPy au framework d'apprentissage automatique TensorFlow, soutenu par Google.

    Dans le cadre d'une contribution au US PyCon Language Summit 2021, van Rossum a publié un document sur GitHub, propriété de Microsoft, dans lequel il détaille certaines de ses ambitions pour faire de Python un langage plus rapide, promettant de doubler sa vitesse à partir de Python 3.11 – l'une des trois branches de Python qui sortiront l'année prochaine, et actuellement en cours de développement officiel en tant que projet de niveau préalpha.

    Le créateur de Python a été embauché en novembre dernier par Microsoft, une entreprise favorable aux logiciels libres, qui l'a fait sortir de sa retraite après un passage chez Dropbox. « Je m'ennuyais à rester assis à la maison pendant ma retraite », a fait savoir van Rossum dans sa présentation, un document PDF. « J'ai postulé chez Microsoft et j'ai été embauché. On m'a donné la liberté de choisir un projet. J'ai choisi de revenir à mes racines. C'est la façon dont Microsoft rend la pareille à Python ».

    Microsoft a soutenu Python de diverses manières, notamment par des cours gratuits de Python qui servent de rampe d'accès à ses services d'intelligence artificielle dans Azure Cloud, par le soutien de son extension VS Code Python et par la présence de Python dans Windows 10. Microsoft est également sponsor de la Python Software Foundation (PSF) depuis 2006 et lui a versé 150 000 dollars cette année.

    Le projet est une « petite équipe financée par Microsoft », selon van Rossum, afin de « prendre en charge l'amélioration des performances » du langage interprété. Microsoft compte actuellement cinq développeurs principaux qui contribuent au développement de CPython, dont Brett Cannon, Steve Dower, Guido van Rossum, Eric Snow et Barry Warsaw – tous des vétérans de la communauté des développeurs principaux de Python.

    Comme Microsoft l'a indiqué dans une note en avril, Snow a travaillé sur les performances multithread en Python via des sous-interpréteurs. Dower sert en tant que build manager et est un expert de CPython pour Windows depuis la version 3.5 de Python. Warsaw contribue au conseil de direction de Python, à l'équipe de réponse à la sécurité de Python et à la liste des gestionnaires de versions de Python. Le projet dispose d'un dépôt GitHub qui comprend un fork de CPython ainsi qu'un "issue tracker" pour les idées et les outils d'analyse des performances.

    Les moyens de rendre Python plus rapide et les contraintes pour rester compatibles avec le code existant

    Dans la présentation faite lors du Language Summit, van Rossum a décrit comment le plan actuel visant à accélérer Python doit être soumis à de sévères contraintes. Les modifications apportées à CPython ne doivent pas casser l'ABI (application binary interface) du runtime, de sorte que les extensions Python écrites en C continuent de fonctionner telles quelles. Les modifications doivent être incrémentielles et gérables, conformément aux objectifs généraux de CPython, à savoir préserver la maintenabilité et une base de code simple et compréhensible. Et toutes les modifications doivent être open source ; il ne peut y avoir d'extensions propriétaires, de "boîtes noires" à Cpython.

    « Ne pas casser la compatibilité stable de l'ABI ; ne pas casser la compatibilité limitée de l'API ; ne pas casser ou ne pas ralentir les cas extrêmes », a promis van Rossum. « Garder un code maintenable », a-t-il ajouté.

    Les changements incrémentiels sont une question sensible pour les développeurs Python, qui ont été confrontés à une tâche gigantesque lors du passage du code de Python 2.x à Python 3, qui a pris plus de dix ans. « Pas de forks/branches à longue durée de vie, pas de surprise de 6 000 lignes [pull requests] », a écrit van Rossum. « Nous nous occuperons également de la maintenance et du support... Toutes les discussions dans les trackers sur les dépôts GitHub ouverts », ajoute-t-il.

    Nom : p02.png
Affichages : 16620
Taille : 57,0 Ko

    Dans le cadre de ces contraintes, van Rossum et ses collègues ont identifié quelques parties de Python qui pouvaient être modifiées librement. Le système de bytecode, le compilateur et l'interpréteur de Python ont tous été désignés comme cibles, car ils ont tendance à changer entre les versions. Le bytecode en particulier n'offre aucune garantie de compatibilité entre les versions majeures, il pourrait donc être modifié de façon radicale si nécessaire.

    Le plan à court terme consiste à ajouter au moins un ensemble important d'améliorations des performances à Python 3.11. Les premières propositions visant Python 3.11 comprennent un « interpréteur de bytecode adaptatif et spécialisé », comme indiqué dans PEP 659. Les instructions de bytecode qui font référence à un type de données spécifique dans une section particulière du code pourraient être remplacées en ligne par une version "spécialisée" de ce bytecode pour ce type particulier de données, ce qui engendrerait un gain de vitesse, d’après l’équipe. Les développeurs estiment une amélioration potentielle des performances d'environ 50 % dans les meilleurs cas.

    D'autres suggestions d'amélioration de la vitesse comprennent l'optimisation de la pile de trames, la modification de la façon dont les appels de fonction sont effectués, la mise en œuvre d'un traitement plus efficace des exceptions, l'ajout d'optimisations qui accélèrent le temps de démarrage et la modification du format de fichier cache du bytecode .pyc.

    Tous ces changements ne sont pas à la hauteur de l'une des améliorations les plus couramment suggérées pour Python : la génération de code machine au moment de l'exécution, ou compilation juste à temps ("JIT"). Dans son exposé, van Rossum a suggéré que de tels plans seraient envisagés après Python 3.11, parce qu'il était logique d'obtenir d'abord les améliorations de performance possibles avec des changements plus ciblés.

    Mais le projet Python de base sera-t-il réellement capable de doubler la vitesse des versions actuelles de Python ? Le discours de van Rossum suggère qu'il ne veut pas être tenu responsable d'un projet aussi ambitieux. « Nous sommes loin d'être certains d'atteindre 2x ! », a-t-il écrit. « Mais nous sommes optimistes et curieux ».

    Néanmoins, il a évoqué l'idée d'une vitesse multipliée par cinq après Python 3.11, notant que « nous devrons être créatifs ». Selon lui, les principaux bénéficiaires des changements à venir dans Python seront ceux qui exécutent du « code Python pur à forte intensité de CPU » et les utilisateurs de sites Web avec Python intégré. Il n'y aura cependant pas beaucoup d'avantages pour le code déjà écrit en C, comme NumPy et TensorFlow, le code lié aux E/S, le code multithreading et le code algorithmiquement inefficace.

    La sortie de Python 3.10, actuellement en version bêta, est prévue pour octobre de cette année. Le calendrier de publication étant à peu près annuel, on peut s'attendre à une version 3.11 en octobre 2022.

    Sources : Présentation Python Language Summit, Dépôt faster-cypthon

    Et vous ?

    Que pensez-vous des ambitions d’accélération de Python par un facteur de 2 à 5 fois plus rapide, voire plus ?
    Le projet promet d'accélérer Python tout en restant compatible avec le code existant. Quel est votre avis à ce sujet ?
    Que pensez-vous des parties de Python que van Rossum et son équipe ont choisies pour être modifiées librement ?

    Voir aussi :

    Guido van Rossum, le créateur du langage de programmation Python, rejoint Microsoft, déclarant que la retraite est "ennuyeuse"
    Python 3.9 est disponible et s'accompagne de l'ajout des opérateurs "|" et "| =" aux dictionnaires, ainsi que de la possibilité de construire des types génériques dans les collections standard
    https://python.developpez.com/actu/3...x-navigateurs/
    Microsoft a intégré Python 3.7 par défaut dans la MàJ Windows 10 mai 2019, de son système d'exploitation
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 71
    Points : 288
    Points
    288
    Par défaut Heat of the moment
    Très intéressant,

    Juste deux points :

    "Le créateur de Python a été embauché en novembre dernier par Microsoft, une entreprise favorable aux logiciels libres"

    hahahahaha, très bon...


    Et s'il faut comparer la vitesse de Python, ce n'est pas par rapport à du compilé mais plutôt à des langages style PHP (et dans une moindre mesure Java, etc.)

  3. #3
    Invité
    Invité(e)
    Par défaut
    Personnellement, j'attends je jour où on pourra faire de la compilation statique avec CPython, et créer des exécutables légers qui n'embarquent pas des centaines de Mo de dépendances inutiles, le tout de manière simple et efficace.

  4. #4
    Membre expérimenté
    Profil pro
    Ingénieur système Linux N3
    Inscrit en
    Juillet 2008
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur système Linux N3

    Informations forums :
    Inscription : Juillet 2008
    Messages : 414
    Points : 1 508
    Points
    1 508
    Par défaut Python et la performance
    Je suis passé de Perl sur mon projet précédent à Python sur mon projet actuell. ràf du ratio 1:2 en faveur du Perl sur la vitesse, C/C++ fait 100x mieux. Par contre quelle libération de passer du Perl illisible même avec un code propre et Python avec un code clair comme de l'anglais.
    Donc très bien pour la performance en espérant que MS ne nous refasse pas le coup du 3E : Embrace, Extend, Extinguish comme ils ont si souvent pratiqué

  5. #5
    Membre expérimenté
    Profil pro
    Ingénieur système Linux N3
    Inscrit en
    Juillet 2008
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur système Linux N3

    Informations forums :
    Inscription : Juillet 2008
    Messages : 414
    Points : 1 508
    Points
    1 508
    Par défaut Le plus proche c'est Perl
    Citation Envoyé par stef-13013 Voir le message
    Très intéressant,

    Juste deux points :

    "Le créateur de Python a été embauché en novembre dernier par Microsoft, une entreprise favorable aux logiciels libres"

    hahahahaha, très bon...


    Et s'il faut comparer la vitesse de Python, ce n'est pas par rapport à du compilé mais plutôt à des langages style PHP (et dans une moindre mesure Java, etc.)
    J'avais fait des tests sur un tri à bulle. En Perl, 16 secondes, en Python 25 secondes. En C, une fraction de seconde sur un tableau 10 fois plus grand. Et en bash, 100 fois plus lent que Perl ou Python, mais ce n'est pas ce qu'on demande, n'est-ce pas ?

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 71
    Points : 288
    Points
    288
    Par défaut Size does matter
    Citation Envoyé par Jeff_67 Voir le message
    Personnellement, j'attends je jour où on pourra faire de la compilation statique avec CPython, et créer des exécutables légers qui n'embarquent pas des centaines de Mo de dépendances inutiles, le tout de manière simple et efficace.
    Vous risquez d'attendre un moment pour une seule et bonne raison : Le langage n'est pas prévu pour ça à la base.

    Vu son aspect ultra-dynamique, il est presque impossible de faire de l'AOT...
    Et même si dans certains cas, on peut y arriver (pas simple !), vous allez vous retrouver avec des exe. d'une taille monstrueuse.
    (Il existe tout de même de très beaux projets comme Cython ou Nuitka qui tentent le coup, avec plus ou moins de réussite)

    La seule approche logique (mais c'est un avis perso) est le JIT.

    Donc en résumé :
    Python n'est tout simplement pas le bon langage pour obtenir un exe (et de qui plus est "light")
    Il vaut mieux se pencher sur des langages dont le design est prévu pour ça (qui a dit Go ?)


    Débat passionnant…

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par stef-13013 Voir le message
    Vous risquez d'attendre un moment pour une seule et bonne raison : Le langage n'est pas prévu pour ça à la base.

    Vu son aspect ultra-dynamique, il est presque impossible de faire de l'AOT...
    Et même si dans certains cas, on peut y arriver (pas simple !), vous allez vous retrouver avec des exe. d'une taille monstrueuse.
    (Il existe tout de même de très beaux projets comme Cython ou Nuitka qui tentent le coup, avec plus ou moins de réussite)

    La seule approche logique (mais c'est un avis perso) est le JIT.

    Donc en résumé :
    Python n'est tout simplement pas le bon langage pour obtenir un exe (et de qui plus est "light")
    Il vaut mieux se pencher sur des langages dont le design est prévu pour ça (qui a dit Go ?)


    Débat passionnant…
    Il ne faut pas confondre le langage et l'implémentation. Jython et Ironpython arrivent à produire des exécutables d'une taille tout à fait acceptable, même si ce ne sont pas de bons choix techniques pour plein d'autres raisons.

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 71
    Points : 288
    Points
    288
    Par défaut
    Citation Envoyé par Jeff_67 Voir le message
    Il ne faut pas confondre le langage et l'implémentation. Jython et Ironpython arrivent à produire des exécutables d'une taille tout à fait acceptable, même si ce ne sont pas de bons choix techniques pour plein d'autres raisons.
    Oui mais ce sont avant tout des JIT, donc pas d'AOT

    De plus, le design du langage force souvent son implémentation (ex: Java, C#, Go)

    Après comme je le disais dans le post précédent, le JIT me semble une option plus que crédible pour "accélérer"

    (A noter que même avec une VM, on est loin de ce que j'appelle un "executable léger")

  9. #9
    Expert confirmé

    Homme Profil pro
    .
    Inscrit en
    Octobre 2019
    Messages
    1 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : .
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2019
    Messages : 1 379
    Points : 5 467
    Points
    5 467
    Par défaut
    Moi j'aimerais bien un vrai support des threads comme en java (non le multiprocessing n'est pas une solution).
    Du coup si il refaisait le GIL, ce serait un vrai bonheur.

    Bon en vrai les perfs en python "on s'en fou", quand on veut du code performant on code plus en python pur mais on utilise des libs optimisé (pyopencl, numpy, pandas...)
    avec numpy on a des perf quasi similaire à du code c/c++ quand même (normal c'est du c qui tourne derrière...)

  10. #10
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 14
    Points : 23
    Points
    23
    Par défaut Allez voir du côté de Nim
    La syntaxe est hyper proche de Python et l'exe compilé à la vitesse du C et se déploie comme un exe...

  11. #11
    Membre expert Avatar de air-dex
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 653
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 653
    Points : 3 773
    Points
    3 773
    Par défaut
    Citation Envoyé par Stan Adkens Voir le message
    Microsoft, une entreprise favorable aux logiciels libres
    Haters gonna hate.
    "Ils ne savaient pas que c'était impossible alors ils l'ont fait." Mark Twain

    Mon client Twitter Qt cross-platform Windows et Linux. (en cours de développement).

  12. #12
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 749
    Points : 10 666
    Points
    10 666
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Jeff_67 Voir le message
    Personnellement, j'attends je jour où on pourra faire de la compilation statique avec CPython, et créer des exécutables légers qui n'embarquent pas des centaines de Mo de dépendances inutiles, le tout de manière simple et efficace.
    Tu devrais t'intéresser au langage Go

  13. #13
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 749
    Points : 10 666
    Points
    10 666
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par stef-13013 Voir le message
    Après comme je le disais dans le post précédent, le JIT me semble une option plus que crédible pour "accélérer"
    C'est sûr que ça va faire du bien. Mais dès qu'on parle de performance, le fait d'avoir un langage très dynamique / sans typage fort limite assez vite ce qu'on peut faire. Par exemple la possibilité d'avoir un paramètre d'entrée / une variable qui change de type d'un appel à l'autre invalide tout compilation JIT précédente. Le fait aussi d'avoir des entiers dont la taille max peut dépasser de façon transparente la capacité des entiers du hardware pose de sacrés défis en terme de génération de code performant.

    Mais bon Python part d'assez loin en terme de performance donc ils vont pouvoir améliorer les choses c'est certain. Mais jusqu'à un certain point qui me parait impossible de franchir sans remettre en cause certains fondements du langage (ce qui a été fait pour Javascript avec des choses comme asm.js / WebAssembly).

  14. #14
    Membre averti Avatar de Atem18
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2012
    Messages : 91
    Points : 328
    Points
    328
    Par défaut
    Personnellement, j'attends je jour où on pourra faire de la compilation statique avec CPython, et créer des exécutables légers qui n'embarquent pas des centaines de Mo de dépendances inutiles, le tout de manière simple et efficace.
    Tu peux utiliser Pyinstaller : https://www.pyinstaller.org/

    A noter que si tu veux vraiment un executable dans aucune dépendances que tu peux distribuer à tes clients, c'est possible.
    Exemple sous Linux pour créer un binaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    apt update && apt install patchelf
    pip install pyinstaller staticx
    pyinstaller -F main.py
    staticx main main_tmp
    mv main_tmp main
    Voilà, tu peux maintenant distribuer ton fichier main sans que quiconque ait quoi que ce soit à installer sur son Linux.

    A noter que si tu veux faire un binaire sous Windows ou MacOS, il faut faire pareil sous chaque plateforme, tu n'as pas de cross-compilation comme en Go.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 34
    Points : 55
    Points
    55
    Par défaut Python + GraalVM
    Il existe une nouvelle implémentation de Python sur GraalVM. Le gain de performance annoncé s'approche de x8. Il reste à voir la compatibilité avec l'existant.

Discussions similaires

  1. Réponses: 0
    Dernier message: 20/06/2020, 20h39
  2. Réponses: 149
    Dernier message: 26/09/2019, 21h57
  3. Réponses: 0
    Dernier message: 27/03/2019, 00h34
  4. Réponses: 19
    Dernier message: 26/01/2018, 12h13
  5. Réponses: 0
    Dernier message: 08/02/2014, 07h01

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