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

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Le plan de travail pour la future version 3.13 de Python a été dévoilé
Et vise la réduction d'au moins 50 % du temps passé dans l'interpréteur ainsi qu'une meilleure gestion de la mémoire

Le , par Anthony

10PARTAGES

6  0 
Les développeurs Mark Shannon et Michael Droettboom viennent d'annoncer leur plan de travail pour Python 3.13. Ce plan comprend notamment des travaux sur la gestion de la mémoire, sur l'activation des sous-interprètes à partir de Python et sur la réduction du temps passé dans l'interpréteur.


Vue d'ensemble

Le plan pour la 3.13 est similaire aux premiers plans pour la 3.12.

La grande différence est que nous avons maintenant terminé le travail de base dont nous avons besoin :

  • La surveillance à faible impact (PEP 669) est implémentée.
  • Le compilateur de bytecode est en bien meilleur état.
  • Le générateur d'interprètes fonctionne.
  • Les expériences sur la machine à registres sont terminées.
  • Nous disposons d'une approche viable pour créer un générateur de code machine facile à maintenir, à faible surcharge et basé sur le copy-and-patch.

Nous prévoyons trois travaux parallélisables pour la version 3.13 :

  • L'optimiseur Tier 2
  • Activation des sous-interprètes à partir du code Python (PEP 554).
  • Gestion de la mémoire

L'optimiseur Tier 2

Voir Optimiseur Tier 2 pour une explication de ce qu'est l'optimiseur de niveau 2.

Le plan de travail est à peu près le suivant :

  • Faire fonctionner l'interpréteur de niveau 2
  • Générer des superblocs (de mauvaise qualité)
  • Mise en œuvre d'une gestion de base des superblocs
  • En parallèle :
  • Ajouter le support de la désoptimisation aux superblocs
  • Améliorer le code de création des superblocs
  • Mise en œuvre du spécialisateur
  • Implémentation de l'évaluateur partiel
  • Implémentation du générateur de code machine copy-and-patch
    • Intégration build-time
    • Génération de code de niveau 2


Notre objectif pour la version 3.13 est de réduire d'au moins 50 % le temps passé dans l'interpréteur.

Plan détaillé.
Plan détaillé pour copy-and-patch.

Activation des sous-interprètes à partir de Python

Contrairement aux autres tâches, qui sont principalement axées sur les performances d'un seul thread, ce travail s'appuie sur le travail GIL par interprète qui a été livré dans Python 3.12 pour permettre aux programmeurs Python de tirer parti d'un meilleur parallélisme dans les sous-interprètes à partir du code Python (sans avoir besoin d'écrire une extension C).

Un projet de PEP 554 existe déjà pour ce travail. La première étape consistera à le mettre à jour et à demander une approbation rapide, afin que nous puissions changer de cap si nécessaire.

Plan détaillé.

Meilleure gestion de la mémoire

Les données de profilage montrent qu'un temps assez important est consacré à la gestion de la mémoire et au cycle GC. Cette fraction ne fera qu'augmenter au fur et à mesure que nous accélérerons le reste de la VM.

Contrairement aux tâches précédentes, nous sommes moins sûrs des solutions appropriées, c'est pourquoi il faut d'abord poursuivre la recherche et l'expérimentation. Nous prévoyons d'en faire un projet secondaire basé sur ce que nous avons appris du travail de niveau 2 ci-dessus.

Nous voulons

  • Réduire le nombre d'allocations en améliorant les structures de données. Nous espérons également que l'évaluation partielle réduira le nombre d'objets temporaires, mais cela fait partie du champ d'application de l'optimiseur de niveau 2, et non de la gestion de la mémoire.
  • Passer moins de temps à faire des GC de cycle. Cela peut être aussi simple que de faire moins de collections, ou aussi complexe que d'implémenter un nouveau chercheur de cycle incrémental.

Source : GitHub

Et vous ?

Qu'en pensez-vous ?

Quelles fonctionnalités attendez-vous de cette future version de Python ?

Voir aussi

Python 3.12.0b1, la première des quatre versions bêta de la 3.12, a été publiée, et apporte de nouvelles fonctionnalités ainsi que des corrections de bogues

Une nouvelle version alpha de Python 3.12, plus rapide et plus légère, est désormais disponible, et apporte plusieurs améliorations au niveau du multitraitement et de la gestion des erreurs

Python 3.11 est disponible et s'accompagne d'une amélioration de la vitesse, de meilleures gestions des erreurs, du type self ainsi que des notes d'exception

Une erreur dans cette actualité ? Signalez-nous-la !