2017-08-24 5 views
1

Je vois souvent que tqdm progress bar est cassé par d'autres caractères, comme:Comment "vider" la barre de progression de tqdm explicitement?

93%|█████████▎| 28/30 [00:02<00:00, 13.44it/s]Subject S9 
100%|██████████| 30/30 [00:02<00:00, 12.94it/s] 
93%|█████████▎| 28/30 [00:02<00:00, 11.49it/s]Pickling... 
100%|██████████| 30/30 [00:02<00:00, 11.47it/s] 

Ici seulement 2 barres de progression doivent être présentés. Néanmoins réussi, l'impression de certains textes interrompt la barre de progression à fort pourcentage et le reste est imprimé par la suite.

Est-il possible de "vider" la barre de progression d'une façon ou d'une autre?

je lis, que tqdm imprime à stderr par défaut et a essayé de le rincer

sys.stderr.flush() 

mais cela n'a pas aidé.

Tout ce qui précède est arrivé dans la simulation de la console PyCharm, donc cela peut être lié à cela.

+1

Test en dehors de PyCharm;). D'après mon expérience, la console offerte par PyCharm a parfois des problèmes. –

Répondre

0

Je pense que votre meilleur pari (depuis tqdm prend un peu plus de la sortie) est d'utiliser

tqdm.write

donc si vous avez une barre de progression vous pouvez l'utiliser pour essayer d'imprimer au cours comme celui-ci:

In [19]:  from tqdm import tqdm 
    ...:  import time 
    ...: 
    ...:  for i in tqdm(xrange(50)): 
    ...:   if i & 0x1 == 0: 
    ...:   tqdm.write(str(i)) 
    ...:   time.sleep(0.5) 
    ...: 
0 
2 
4 
6 
8 
10 
12 
14%|███████████▌                  | 7/50 [01:50<11:16, 15.73s/it]---------------------------------------------------------------------------    | 11/50 [00:03<00:10, 3.62it/s] 

Qui devrait finir par imprimer et garder la barre au fond séparément.

si vous souhaitez rafraîchir la barre explicitement que vous pouvez essayer d'utiliser tqdm.refresh en plus:

In [16]: gen = tqdm(xrange(50)) 
    0%|                       | 0/50 [00:00<?, ?it/s] 
In [17]: for i in gen: 
    ...:  if i & 0x1 == 0: 
    ...:  print str(i) 
    ...:  gen.refresh() 
    ...:  time.sleep(0.5) 
    ...: 
    ...: 
    ...: 
    ...: 
0 
    2%|█▋                     | 1/50 [00:01<01:17, 1.59s/it]2 
    6%|████▉                    | 3/50 [00:02<00:55, 1.19s/it]4 
10%|████████▎                   | 5/50 [00:02<00:40, 1.10it/s]6 
14%|███████████▌                  | 7/50 [00:03<00:30, 1.41it/s]8 
14%|███████████▌                  | 7/50 [00:03< 

Mais comme vous pouvez le voir sans utiliser tqdm.write vous encore jusqu'à la fin avec des personnages à côté de la barre en cours d'impression .