Técnicas de depuración multiprocesamiento.

Estoy teniendo problemas para depurar una aplicación de proceso múltiple (específicamente utilizando un grupo de procesos en el módulo de multiprocesamiento de python). Tengo un punto muerto aparente y no sé qué lo está causando. El seguimiento de la stack no es suficiente para describir el problema, ya que solo muestra el código en el módulo de multiprocesamiento.

¿Existen herramientas de Python o técnicas generales que se utilizan para depurar puntos muertos?

Yah, la depuración de los puntos muertos es divertido. Puede configurar el nivel de registro para que sea más alto; consulte la documentación de Python para obtener una descripción, pero muy rápidamente:

import multiprocessing, logging logger = multiprocessing.log_to_stderr() logger.setLevel(multiprocessing.SUBDEBUG) 

Además, agregue el registro de cualquier cosa en su código que se ocupe de un recurso o lo que pueda estar en disputa. Finalmente, disparar en la oscuridad: generar procesos secundarios durante una importación puede causar un problema.

Para evitar los puntos muertos en primer lugar, el aprendizaje de buenas prácticas es útil, ya que el parallel processing es bastante sutil. ¡El Pequeño Libro de Semáforos (gratis) puede ser una lectura muy agradable!