"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo manejar el inicio de sesión en aplicaciones Python de multiprocesamiento?

¿Cómo manejar el inicio de sesión en aplicaciones Python de multiprocesamiento?

Publicado el 2024-11-08
Navegar:722

How to Handle Logging in Multiprocessing Python Applications?

Registro de multiprocesamiento en Python

Al utilizar el módulo de multiprocesamiento de Python, es importante considerar las prácticas de registro para evitar errores causados ​​por múltiples procesos que escriben en el mismo identificador de archivo simultáneamente. De forma predeterminada, el registrador compatible con multiprocesamiento proporcionado por mp.get_logger() garantiza mecanismos de bloqueo adecuados en sys.stderr.

Sin embargo, los módulos que no son compatibles con multiprocesamiento pueden necesitar modificaciones para utilizar el registro compatible con multiprocesamiento. Para evitar estos cambios, considere enfoques alternativos:

Controlador de registro personalizado

Un enfoque es crear un controlador de registro personalizado que envíe registros al proceso principal a través de una tubería. Esto permite que los módulos utilicen el módulo de registro estándar mientras el proceso principal maneja el registro real. Aquí hay una implementación:

from logging.handlers import RotatingFileHandler
import multiprocessing, threading, logging, sys, traceback

class MultiProcessingLog(logging.Handler):
    def __init__(self, name, mode, maxsize, rotate):
        logging.Handler.__init__(self)

        self._handler = RotatingFileHandler(name, mode, maxsize, rotate)
        self.queue = multiprocessing.Queue(-1)

        t = threading.Thread(target=self.receive)
        t.daemon = True
        t.start()

El controlador recibe registros de los procesos secundarios y los escribe en un archivo utilizando el controlador de archivos proporcionado. Esto garantiza un registro centralizado sin la necesidad de realizar cambios en los módulos dependientes.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3