2011-01-01 13 views
5

Mi aplicación crea subprocesos. Por lo general, estos procesos se ejecutan y terminan sin ningún problema. Sin embargo, a veces, se cuelgan.¿Cómo saber si un programa se bloqueó con un subproceso?

Actualmente estoy usando la python subprocess module para crear estos subprocesos. Verifico si un subproceso colapsó al invocar el método Popen.poll(). Lamentablemente, dado que mi depurador está activado en el momento de un bloqueo, el sondeo no devuelve el resultado esperado.

Me gustaría poder ver la ventana de depuración (no terminarla) y aún así poder detectar si un proceso se cuelga en el código python.

¿Hay alguna manera de hacerlo?

Respuesta

2

Cuando se abre el depurador, el proceso aún no ha finalizado, y subprocess solo sabe si un proceso se está ejecutando o ha finalizado. Entonces no, no hay forma de hacerlo a través del subprocess.

+0

Gracias por la respuesta, ¿hay alguna otra forma de resolver este problema con python? –

+0

Si sus subprocesos tienen algún medio de salida que pueda supervisar su proceso principal, podrían emitir indicadores "Estoy vivo" a intervalos regulares, y la ausencia de dicho indicador durante un período de tiempo significativamente prolongado podría significar que el subproceso se ha bloqueado. – Amber

0

temas de examen:

subprocess.check_output() para sus procesos hijos códigos
psutil para el análisis de niños & proceso (y mucho más)
threading biblioteca de retorno, para controlar estos estados niño en su script, así, una vez que haya decidido cómo quiere manejar el romper, si se desea

import psutil 
myprocess = psutil.Process(process_id) # you can find your process id in various ways of your choosing 
for child in myprocess.children(): 
    print("Status of child process is: {0}".format(child.status())) 

también puede utilizar la librería de hilos t o cargue su subproceso en un subproceso separado, y luego realice los análisis de psutil anteriores simultáneamente con su otro proceso.

Si encuentra más información, avíseme, no es coincidencia que haya encontrado esta publicación.

Cuestiones relacionadas