J'utilise tqdm
pour imprimer la progression dans un script que j'exécute dans un bloc-notes Jupyter. J'imprime tous les messages sur la console via tqdm.write()
. Cependant, cela me donne toujours une sortie biaisée comme ceci:
Autrement dit, 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 un terminal. Comment puis-je resoudre ceci?
python
jupyter-notebook
tqdm
Rohan Saxena
la source
la source
tqdm_notebook
, je peux même faire desprint
s normales , et cela n'affecte pas la barre de progression.progressbar
stackoverflow.com/questions/3160699/python-progress-barRéponses:
Essayez d'utiliser à la
tqdm.notebook.tqdm
place detqdm
, comme indiqué ici .Cela peut être aussi simple que de changer votre importation en:
from tqdm.notebook import tqdm
Bonne chance!
EDIT: Après les tests, il semble que cela
tqdm
fonctionne correctement en «mode texte» dans le bloc-notes Jupyter. C'est difficile à dire car vous n'avez pas fourni d' exemple minimal , mais il semble que votre problème soit causé par une instruction d'impression à chaque itération. L'instruction d'impression sort un nombre (~ 0,89) entre chaque mise à jour de la barre d'état, ce qui perturbe la sortie. Essayez de supprimer l'instruction d'impression.la source
print()
déclaration, j'ai utilisétqdm.write()
. Cependant,tqdm_notebook
donne de bons résultats. Mercitqdm
, plutôt quetqdm_notebook
? Cela fonctionne bien avec Python 3.6 et Jupyter 1.0.0.Ceci est une réponse alternative au cas où tqdm_notebook ne fonctionne pas pour vous.
Compte tenu de l'exemple suivant:
La sortie ressemblerait à quelque chose comme ceci (la progression apparaîtrait en rouge):
Le problème est que la sortie vers stdout et stderr est traitée de manière asynchrone et séparément en termes de nouvelles lignes.
Si, par exemple, Jupyter reçoit sur stderr la première ligne, puis la sortie "traitée" sur stdout. Ensuite, une fois qu'il reçoit une sortie sur stderr pour mettre à jour la progression, il ne reviendra pas et met à jour la première ligne car il ne mettra à jour que la dernière ligne. Au lieu de cela, il devra écrire une nouvelle ligne.
Solution de contournement 1, écriture sur stdout
Une solution de contournement serait de générer les deux vers stdout à la place:
La sortie passera à (plus de rouge):
Ici, nous pouvons voir que Jupyter ne semble pas s'éclaircir avant la fin de la ligne. Nous pourrions ajouter une autre solution de contournement pour cela en ajoutant des espaces. Tel que:
Ce qui nous donne:
Solution de contournement 2, définissez plutôt la description
Il peut en général être plus simple de ne pas avoir deux sorties mais de mettre à jour la description à la place, par exemple:
Avec la sortie (description mise à jour pendant son traitement):
Conclusion
Vous pouvez généralement le faire fonctionner correctement avec tqdm ordinaire. Mais si tqdm_notebook fonctionne pour vous, utilisez-le simplement (mais vous ne lirez probablement pas aussi loin).
la source
progressbar
stackoverflow.com/a/34482761/1207193La plupart des réponses sont désormais dépassées. Mieux vaut si vous importez correctement tqdm .
la source
TqdmDeprecationWarning: This function will be removed in tqdm==5.0.0 Please use tqdm.notebook.tqdm instead of tqdm.tqdm_notebook
Si les autres conseils ici ne fonctionnent pas et - tout comme moi - vous utilisez l'
pandas
intégrationprogress_apply
, vous pouvez le laissertqdm
gérer:Le point principal ici réside dans le
tqdm.autonotebook
module. Comme indiqué dans leurs instructions d'utilisation dans les ordinateurs portables IPython , cela permet detqdm
choisir entre les formats de barre de progression utilisés dans les ordinateurs portables Jupyter et les consoles Jupyter - pour une raison qui manque toujours d'enquêtes supplémentaires de mon côté, le format spécifique choisi partqdm.autonotebook
fonctionne bienpandas
, alors que tous les autres n'ont pas 't, pourprogress_apply
spécifiquement.la source
Pour compléter la réponse d'oscarbranson: il est possible de choisir automatiquement des versions console ou notebook de la barre de progression en fonction de l'endroit où elle est exécutée:
Plus d'informations peuvent être trouvées ici
la source
Aucune de ces réponses ne fonctionne pour moi. Je trouve que courir à la suite trie ce problème après une erreur (cela efface simplement toutes les instances de barres de progression en arrière-plan):
la source
try: # Avoids problem on notebooks / Hydrogen IDE tqdm.tqdm._instances.clear() except Exception: pass
Pour tous ceux qui utilisent Windows et ne peuvent résoudre le problème des barres de duplication avec l'une des solutions mentionnées ici. J'ai dû installer le
colorama
paquet comme indiqué dans les problèmes connus de tqdm qui l'ont résolu.Essayez-le avec cet exemple:
Ce qui produira quelque chose comme:
la source
Utilisez tqdm_notebook
la source