2017-07-23 1 views
2

J'ai le code Python 3 suivant:Python tqdm et impression pour l'impression bizarre

from tqdm import tqdm 

print("Before") 
for _ in tqdm(range(10)): pass 
print("After") 

Je vous attendre à obtenir la sortie suivante à la borne:

Before 
100%|##########| 10/10 [00:00<?, ?it/s] 
After 

Cependant, ce que je reçois est la suivante:

100%|##########| 10/10 [00:00<?, ?it/s] 
Before 
After 

Ie les impressions finissent dans le mauvais ordre par rapport à mon code. J'ai aussi essayé d'appeler sys.flush avant et après les appels à print, pour obtenir la sortie suivante:

Before 
100%|##########| 10/10 [00:00<?, ?it/s]After 

En outre, le changement print-tqdm.write n'a pas d'effet sur le behavoir. Pourquoi se comporte-t-il de manière inattendue?

Édition: Cette question concerne le cas spécifique où la fonction d'impression est utilisée avant ou après la boucle tqdm. Il y a d'autres questions similaires qui concernent l'impression de messages tandis que dans la boucle tqdm, ce qui n'est pas le cas ici.

+0

@zwer Je ne dirais pas que c'est nécessairement un doublon car cette question concerne l'impression tout en étant dans une boucle tqdm. Mais l'une des réponses à cette question m'a fourni une solution, alors merci! :) – HelloGoodbye

+0

@zwer Je crois que cette question a été marquée incorrectement comme une copie exacte de l'autre question - ils sont différents comme je l'ai expliqué dans un edit à la question. Comment puis-je le marquer comme une copie exacte? – HelloGoodbye

Répondre