Hoy corrí en contra del hecho de que sys.exit()
llamado desde un hilo hijo no mata el proceso principal. No sabía esto antes, y está bien, pero necesitaba mucho tiempo para darme cuenta de esto. Se habría guardado mucho tiempo, si sys.exit(msg)
hubiera impreso msg
a stderr
. Pero no lo hizo.Python: ¿Por qué `sys.exit (msg)` llamado desde un hilo no imprime `msg` en stderr?
Resultó que no era un error real en mi aplicación; llamó sys.exit(msg)
con un error significativo de una manera volitiva, pero no pude ver esto.
In the docs for sys.exit()
it is stated: "[...] cualquier otro objeto que se visualiza como sys.stderr
y da como resultado un código de salida de 1"
Esto no es cierto para una llamada de un niño-hilo, donde sys.exit()
, obviamente, se comporta como thread.exit()
: "elevar la excepción SystemExit Cuando no se detecta, esto hará que el hilo para salir en silencio ."
Creo que cuando un programador quiere sys.exit(msg)
para imprimir un mensaje de error, debe imprimirse, independientemente del lugar desde donde se lo llama. Por qué no? Actualmente no veo ningún motivo. Al menos debe haber una pista en los documentos para sys.exit()
de que el mensaje no se imprime desde los hilos.
¿Qué opinas? ¿Por qué los mensajes de error están ocultos en los hilos? ¿Esto tiene sentido?
Saludos,
Jan-Philip Gehrcke
Usted me dio un buen consejo, otra vez;) Btw: Es tan bueno que comparta su conocimiento aquí. ¡Veo que actualmente gastas mucho de tu tiempo para llenar esta plataforma con cosas puramente expertas de Python!Esto es lo que la comunidad necesita, pero eso no es una cuestión de rutina. Muchísimas gracias por esto Jan-Philip –
@ Jan-Philip, eres bienvenido, y, gracias por las felicitaciones, siempre es genial escuchar que estoy siendo de ayuda. –