salut,
j'ai fait une fonction qui travaille sur un fichier de 19 lignes et un autre fichier de 77373.
Ma fonction fait appel à d'autres fonctions et d'autres sous fonctions et fait de nombreuses opérations sur ces lignes.
un test m'a permis de trouver que la premiere etape prend 22 minutes sur mon ordinateur et la deuxieme etape plus d'1h30.
Cest long et je voudrais faire tourner ces fonctions sur d'autres fichiers plus importants. Par conséquent je voudrais faire une barre de progression. Pour la partie graphique jai trouvé des trucs sur internet. Par contre,comment quantifier facilement la totalité des opérations que le programme effectue (afin de faire une incrémentation et un % de progression)?
merci
# estimer le travail puis le faire
Posté par NeoX . Évalué à 4.
soit tu fais au pif, tu met un . pour chaque ligne traitée,
tu vois alors les . qui avancent, ca te montre que le script travail
soit tu estimes le nombre de ligne (compter les lignes c'est rapide, en bash c'est
wc -l fichier
tu sais alors combien il y aura de ligne à traiter, tu fais ta regle de 3, et tu sais quand faire bouger le %, suffit alors de compter les lignes et de bouger le % toutes les X lignes.si tu as 100 lignes, c'est 1% a chaque ligne, si tu as 77373lignes, ce sera 1% toutes les 773lignes
[^] # Re: estimer le travail puis le faire
Posté par chimrod (site web personnel) . Évalué à 3.
J'imagine que pour implémenter ça, il faudra peut-être modifier le code en profondeur. Si le code fait appel à d'autres fonctions et d'autres sous fonctions et fait de nombreuses opérations sur ces lignes, il faut pouvoir garder un compteur sur le nombre ligne traitées lors de l'appel aux sous routines.
C'est le genre de fonctionnalité qui est beaucoup plus facile à mettre en place quand c'est pensé dès le début du programme, plutôt que de l'ajouter dans un code existant (si l'on veut garder un code propre). Une manière de faire est de passer par un Visiteur_(patron_de_conception) si l'on code en objet.
# Typer Progress Bar
Posté par htsr . Évalué à 5.
J'utilise actuellement pour un projet le paquet Typer qui permet de créer facilement une interface en ligne de commande et dedans tu as
typer.progressbar()
.Le tutoriel est ici https://typer.tiangolo.com/tutorial/progressbar/
C'est très simple d'utilisation si tu utilises une boucle for. Tu peux aussi mettre à jour la barre manuellement.
Ça donne un bon rendu, par défaut quelque chose comme ça :
[############------------------------] 34% 00:08:16
Et tu peux rajouter un label si tu veux.
Si le fait de devoir importer tout le paquet juste pour avoir une barre de progression te gêne la doc de typer pointe vers un autre paquet qui ne fait que ça, tqdm (je ne peux pas te faire de retours, je ne l'ai pas essayé).
[^] # Re: Typer Progress Bar
Posté par htsr . Évalué à 3.
Sinon la recherche "progress bar" sur https://pypi.org renvois pleins de paquets.
# rich
Posté par Seb . Évalué à 4.
j'ai utilisé
progressbar
pendant assez longtemps mais maintenant j'utilise rich qui permet de faire plein de trucs joli en console (couleurs, tableaux, logging, …)# tqdm
Posté par brubru . Évalué à 0.
Pour faire des barres super facilement pour des scripts j'utilise tqdm
https://github.com/tqdm/tqdm
aussi simple à utiliser que :
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.