193 votes

tqdm dans Jupyter Notebook imprime les nouvelles barres de progression de manière répétée

J'utilise tqdm pour imprimer la progression dans un script Je m'exécute dans un carnet Jupyter. J'imprime tous les messages sur la console via tqdm.write() . Cependant, cela me donne toujours un résultat faussé comme celui-ci :

enter image description here

C'est-à-dire que chaque fois qu'une nouvelle ligne doit être imprimée, une nouvelle barre de progression est imprimée sur la ligne suivante. Cela ne se produit pas lorsque j'exécute le script via le terminal. Comment puis-je résoudre ce problème ?

0 votes

En fait, quand j'utilise tqdm_notebook Je peux même le faire normalement. print et cela n'affecte pas la barre de progression.

0 votes

Une alternative est d'utiliser ceci progressbar stackoverflow.com/questions/3160699/python-progress-bar/

14voto

kungfujam Points 360

Aucune des propositions ci-dessus ne fonctionne pour moi. Je trouve que l'exécution de ce qui suit règle le problème après erreur (cela efface simplement toutes les instances de barres de progression en arrière-plan) :

from tqdm import tqdm

# blah blah your code errored

tqdm._instances.clear()

1 votes

Merci ! Cependant, une erreur se produit si aucune instance n'existe. Je veux quand même l'utiliser avec des scripts et l'IDE Hydrogen. Voici mon code. try: # Avoids problem on notebooks / Hydrogen IDE tqdm.tqdm._instances.clear() except Exception: pass

0 votes

Yup il lancera une exception si aucune instance n'existe. Y a-t-il un problème avec votre approche try except ?

1 votes

C'est exactement ce que je recherchais. Je vais désormais ajouter cette ligne régulièrement dans mes carnets de notes. Merci @JamesOwers

6voto

Nebulo Points 121

Pour tous ceux qui sont sous Windows et qui n'ont pas pu résoudre le problème de duplication des barres avec l'une des solutions mentionnées ici. J'ai dû installer le colorama comme indiqué dans Les problèmes connus de tqdm qui l'a réparé.

pip install colorama

Essayez-le avec cet exemple :

from tqdm import tqdm
from time import sleep

for _ in tqdm(range(5), "All", ncols = 80, position = 0):
    for _ in tqdm(range(100), "Sub", ncols = 80, position = 1, leave = False):
        sleep(0.01)

Ce qui donnera quelque chose comme :

All:  60%|                | 3/5 [00:03<00:02,  1.02s/it]
Sub:  50%|                  | 50/100 [00:00<00:00, 97.88it/s]

1voto

Kranthi Points 204

Utiliser tqdm_notebook

from tqdm import tqdm_notebook as tqdm

x=[1,2,3,4,5]

for i in tqdm(range(0,len(x))):

    print(x[i])

0voto

Un autre exemple de barre de progression utilisant tqdm

      from tqdm import tqdm
      my_list = list(range(100))
      with tqdm(total=len(my_list)) as pbar:
          for x in my_list:
             pbar.update(1)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X