Ich habe eine einfache Frage: Wie ändere ich die integrierte Python-Logger print
Funktion auf tqdm.write
so, dass die Protokollierung Nachrichten nicht interferieren mit tqdm Fortschrittsbalken? Vielen Dank!Ändern Sie die Protokollierung "print" -Funktion zu "tqdm.write" so Protokollierung stört nicht mit Fortschrittsbalken
Antwort
Sie benötigen einen benutzerdefinierten Protokollhandler:
import logging
import tqdm
class TqdmLoggingHandler (logging.Handler):
def __init__ (self, level = logging.NOTSET):
super (self.__class__, self).__init__ (level)
def emit (self, record):
try:
msg = self.format (record)
tqdm.tqdm.write (msg)
self.flush()
except (KeyboardInterrupt, SystemExit):
raise
except:
self.handleError(record)
und dann diese Kette an der Protokollierung hinzufügen:
import time
log = logging.getLogger (__name__)
log.setLevel (logging.INFO)
log.addHandler (TqdmLoggingHandler())
for i in tqdm.tqdm (range (100)):
if i == 50:
log.info ("Half-way there!")
time.sleep (0.1)
Nicht sicher, was Sie versuchen zu tun, aber wenn Sie verwenden:
import tqdm
statt
from tqdm import tqdm
, wenn Sie (oder einige Ihrer Module) setzen
print
in Ihrem Programm wird es sich nicht auf
beziehentqdm.print
aber das Original drucken. Sie werden die kleine Unbequemlichkeit haben, die spätere Anweisung einzugeben, wenn Sie eine Fortschrittsleiste sehen möchten.
Den integrierte Python-Logger erscheint 'print' zu verwenden. Dies stört tqdm. Ich möchte, dass der Logger * nicht * druckt, sondern tqdm.write. – Guillochon
Mein Vorschlag ist, tqdm.print bei Bedarf zu verwenden, um diese Interferenz zu vermeiden. – fernand0
Sie verstehen nicht. Der integrierte Python-Logger ist störend, z.B. 'log.warn (" Nachricht hier ")'. – Guillochon
Perfekt! Vielen Dank! – Guillochon
Ich brauchte etwas Logging-Modul für die Ausgabe verwenden, löste es so: http://stackoverflow.com/a/41224909/638504. Die Ausgabe ist wie folgt: '2016-12-19 15:35:06 [INFO] 16% | ##### 9 | 768/4928 [07:04 <40:50, 1.70it/s] ' – ddofborg
ist es wichtig,' import tqdm' nicht 'von tqdm import tqdm' zu verwenden, da sonst der IO den Fortschrittsbalken unterbricht –