Cambie la función de “impresión” del registro a “tqdm.write” para que el registro no interfiera con las barras de progreso

Tengo una pregunta simple: ¿Cómo cambio la función de print del registrador Python incorporada a tqdm.write para que los mensajes de registro no interfieran con las barras de progreso de tqdm? ¡Gracias!

Necesita un controlador de registro personalizado:

 import logging import tqdm class TqdmLoggingHandler(logging.Handler): def __init__(self, level=logging.NOTSET): super().__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) 

y luego agregar esto a la cadena de registro:

 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) 

Edición: Se corrigió un error en la llamada al método init de super TqdmLoggingHandler, que fue señalado por el lector diligente @BlaineRogers en los comentarios. (Si alguien quiere leer más sobre esta área turbia de Python, recomiendo https://fuhm.net/super-harmful/ )