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.
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.
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