Zeige Fortschrittsbalken und verbleibende Zeit auf der Konsole (Python)

[Ergänzung] 10.05.2017

In Bezug auf das Thema des Titels stellte er ein Paket namens [tqdm] vor (https://pypi.python.org/pypi/tqdm). Als ich es versuchte, war die Ladung so leicht, dass es wie ein Idiot schien, stdout alleine zu treffen, und es scheint, dass ich es danach gewohnheitsmäßig benutzen werde.

Ich mag es nicht, wenn man stdout schleift, also fand ich es mühsam, es auszudünnen, aber es war eine Schande. Versuch es.

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

_tqdm.py Wenn Sie sich die Nutzung ansehen, ist es einfach so, aber für diejenigen, die es ausprobieren möchten 2. Verwenden Sie für x Personen xrange.

> python -m pip install tqdm

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

Das Folgende ist ein schlechter Satz mit Ausnahme der eingegangenen Kommentare.

Fortschritt und verbleibende Zeit anzeigen

Da die Arbeit des Formens von Trainingssätzen für das Lernen Zehntausende geworden ist, habe ich mir eine Funktion gewünscht, die herunterzählt. Ich habe nach einer ordentlichen Implementierung gesucht, aber es war anders, also habe ich es erfunden.

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

Es ist etwas einfacher, weil ich die geplante Endzeit visualisieren konnte. Es fühlt sich gut an für eine maschinelle Lernschleife.

Spezifikation

Implementierung

Betrieb nur unter Windows-Umgebung bestätigt.

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()

\ # Zeitanzeige ist eine Macht.

Recommended Posts

Zeige Fortschrittsbalken und verbleibende Zeit auf der Konsole (Python)
[Python] Ein Fortschrittsbalken auf dem Terminal
Python auf Ruby und wütend Ruby auf Python
Hinweise zu Python- und Wörterbuchtypen
Python 3.6 unter Windows ... und zu Xamarin.
Fortschrittsbalken im Popup mit Python Kivy
Verknüpfen Sie Modelica und Python unter Windows
Cisco Catalyst IOS-Python und Bash unter XE
Erstellen Sie Python 3 und OpenCV unter Ubuntu 18.04
Virtuelle Python-Umgebung und Pakete unter Ubuntu
Ein Memo mit Python2.7 und Python3 in CentOS
Hinweise zum Erstellen von Python und Pyenv auf dem Mac
Siehe Datei- und Ordnerinformationen zu Python
[Python] Fortschrittsanzeige nach Fortschrittsbalken mit tqdm
Verstehen Sie Python-Listen, Wörterbücher und so weiter.
Installieren Sie pyenv und Python 3.6.8 unter Ubuntu 18.04 LTS
Installieren Sie Python3.5 + NumPy + SciPy und führen Sie es unter Windows 10 aus
Hinweise zur Installation von Python3 und zur Verwendung von pip unter Windows7
[Python] Konvertierungsnotiz zwischen Zeitdaten und numerischen Daten
Verknüpfung von PHP und Python von Grund auf auf Laravel
Zum Zeitpunkt des Python-Updates mit Ubuntu
Diejenige, die den Fortschrittsbalken in Python anzeigt
[Hinweis] Installieren von Python 3.6 + α unter Windows und RHEL
Versuchen Sie, MLB-Daten auf Mac und Python zu importieren
Installieren Sie MongoDB unter Ubuntu 16.04 und arbeiten Sie über Python
Zur Darstellung von Datum, Uhrzeit, Uhrzeit und Sekunden in Python
Installieren Sie Python und Bibliotheken für Python unter MacOS Catalina
Installieren Sie die ZIP-Version Python und Pip unter Windows 10