Afficher la barre de progression et le temps restant sur la console (python)

[Ajout] 10/05/2017

Concernant le sujet du titre, il a introduit un package appelé tqdm. Quand je l'ai essayé, la charge était si légère qu'il semblait idiot de frapper seul stdout, et il semble que je l'utilise habituellement par la suite.

Je n'aime pas la surcharge de la boucle stdout, donc j'ai senti que c'était un problème de l'éclaircir, mais c'était dommage. Essayez-le.

https://pypi.python.org/pypi/tqdm

_tqdm.py Si vous regardez l'utilisation, c'est comme ça, mais pour ceux qui veulent l'essayer 2. Pour x personnes, veuillez utiliser xrange.

> python -m pip install tqdm

>>> from tqdm import tqdm
>>>
>>> for _ in tqdm(range(0x100000)):
>>>     pass

Ce qui suit est une mauvaise phrase, à l'exception des commentaires reçus.

Afficher la progression et le temps restant

Alors que le travail de moulage des ensembles de formation pour l'apprentissage est devenu des dizaines de milliers, j'en suis venu à vouloir une fonction qui décompte. J'ai cherché une mise en œuvre soignée, mais c'était différent, alors je l'ai inventée.

> progbar.py
  24% |#######-------------------------|  0:12:06
 100% |################################|  0:00:00

C'est un peu plus facile car j'ai pu visualiser l'heure de fin programmée. Cela fait du bien pour une boucle de formation en machine learning.

spécification

la mise en oeuvre

Opération confirmée uniquement sous environnement Windows.

progbar.py


import sys, time

class progbar:
    def __init__(self, period=100, bars=32):
        self._period  = period
        self.bars     = bars
        self.active   = True
        self.start    = time.time()

    def dispose(self):
        if self.active:
            self.active = False
            self.update(self._period)
            sys.stdout.write("\n")

    def __del__(self):
        self.dispose()

    def __enter__(self):
        return self

    def __exit__(self, type, value, traceback):
        self.dispose()

    def period(self):
        return self._period

    def update(self, tick):
        rate = tick / self._period

        # progress rate
        str = "{0:7d}% ".format(int(rate*100))

        # progress bar
        bar_prog = int(rate * self.bars)
        str += "|"
        str += "#" * (            bar_prog)
        str += "-" * (self.bars - bar_prog)
        str += "|"

        # calc end
        elapsed = time.time() - self.start
        predict = (elapsed * (1 - rate) / rate) if not rate == 0.0 else 0
        s = int(predict)
        m, s = divmod(s, 60)
        h, m = divmod(m, 60)
        d, h = divmod(h, 24)
        str += "{0:3d}:{1:02d}:{2:02d}\r".format(h,m,s)

        sys.stdout.write(str)

def main():
    # how to use
    with progbar(500) as pb:
        for i in range(pb.period()):
            time.sleep(0.01)
            if i % 10 == 0:
                pb.update(i)
    
if __name__ == '__main__':
    main()

\ # L'affichage de l'heure est une puissance.

Recommended Posts

Afficher la barre de progression et le temps restant sur la console (python)
[Python] Une barre de progression sur le terminal
Python sur Ruby et Ruby en colère sur Python
Notes sur Python et les types de dictionnaire
Python 3.6 sous Windows ... et vers Xamarin.
Barre de progression en pop-up avec Python Kivy
Lier Modelica et Python sous Windows
Cisco Catalyst IOS-Python et Bash sur XE
Créer un environnement Python 3 et OpenCV sur Ubuntu 18.04
Environnement virtuel Python et packages sur Ubuntu
Un mémo contenant Python2.7 et Python3 dans CentOS
Remarques sur la construction de Python et pyenv sur Mac
Voir les informations sur les fichiers et les dossiers sur python
[Python] Affichage de la progression par barre de progression en utilisant tqdm
Comprenez les listes Python, les dictionnaires, etc.
Installez pyenv et Python 3.6.8 sur Ubuntu 18.04 LTS
Installez et exécutez Python3.5 + NumPy + SciPy sur Windows 10
Remarques sur l'installation de Python3 et l'utilisation de pip sous Windows7
[Python] Mémo de conversion entre les données temporelles et les données numériques
Lier PHP et Python à partir de zéro sur Laravel
Au moment de la mise à jour de python avec ubuntu
Celui qui affiche la barre de progression en Python
[Note] Installation de Python 3.6 + α sur Windows et RHEL
Essayez d'importer des données MLB sur Mac et Python
Installez MongoDB sur Ubuntu 16.04 et utilisez python
Pour représenter la date, l'heure, l'heure et les secondes en Python
Installer Python et les bibliothèques pour Python sur MacOS Catalina
Installez la version ZIP Python et pip sur Windows 10