Parallelize deepfreeze.py

Ouverte
#94,727 4 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
25/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
python
Domaine
build-system

Piste de recherche

Commencez par Python/deepfreeze/deepfreeze.py et les commandes de build indiquées dans l’issue, puis suivez la manière dont Python/deepfreeze/deepfreeze.c est généré. Évaluez les sorties .inc proposées pour chaque entrée et les règles de build. C’est terminé lorsque deepfreezing peut utiliser plusieurs cœurs tout en produisant la sortie deepfreeze.c requise et en préservant le flux de build actuel.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

3.13 build type-feature

Feature or enhancement

I propose to parallelize deepfreezing to speed up compile time for core devs.

Pitch

deepfreezing / deepfreeze.py is a choke point for building CPython. Deepfreezing happens very late in the build process and takes considerable amount of time, especially for pydebug builds. Deepfreezing is a single process and does not benefit from multiple cores. Every build that touches a core file will result in re-freezing. On my system and with ccache populates, make spends between 60 to 75% time just in deepfreeze.py for debug builds. For regular builds it's about 25-30% of total build time.

$ ./configure -C --with-pydebug
$ make clean
$ time make

real    0m9,339s
user    0m13,630s
sys     0m2,657s
$ rm Python/deepfreeze/deepfreeze.c
$ time make Python/deepfreeze/deepfreeze.c

real    0m7,267s
user    0m7,033s
sys     0m0,204s

The process can be parallelized. One possible solution is to split the work. For each input module create a make rule that outputs an inc file, e.g. Python/deepfreeze/"importlib._bootstrap.inc. An another rules creates deepfreeze.c with #include "importlib._bootstrap.inc, ... This keeps all code in one object file.

Langage dominant
Python
Étoiles
77.2k
Forks
36k
Merge moyen
1 j 9 h
PR mergées (30 j)
558

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de python/cpython

Toutes les issues de python/cpython

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.