Estoy intentando depurar algún código que escribí, lo que implica una gran cantidad de procesos paralelos. Y tiene un comportamiento no deseado que implica salida a sys.stdout
y ciertos mensajes se imprimen dos veces. Para fines de depuración, sería muy útil saber si en cierto punto sys.stdout
se ha limpiado o no. Me pregunto si esto es posible y si es así, ¿cómo?Cómo saber si sys.stdout se ha eliminado en Python
Ps. No sé si importa, pero estoy usando OS X (al menos algunos comandos sys
dependen del sistema operativo).
Enjuagado o no, sys.stdout no le dará un orden garantizado entre procesos (y puede que ni siquiera entre subprocesos en el mismo proceso). ¿Por qué no agregar marcas de tiempo y mensajes de registro precisos por separado de cada uno o, mejor aún, hacer que todos ellos envíen mensajes de depuración a través de una cola entre procesos o entre hilos? – James
El problema es que la misma salida se produce dos veces, por lo que se agregan marcas de tiempo e.t.c. realmente no ayudará. También cambiar sys.stdout a algo personalizado no ayuda, ya que esto es realmente un problema con el búfer. Si comienzo todos los procesos de python con el indicador -u, no entiendo el problema. Me gustaría saber qué está sucediendo exactamente en lugar de simplemente enrojecer después de que algo IO sucedió, ya que sería una solución fea sin entender el núcleo del problema. – koffie