2010-09-10 12 views
11

Estoy usando el módulo de multiprocesamiento para hacer un procesamiento en paralelo en mi programa. Cuando lo estoy probando, a menudo quiero matar el programa temprano cuando noto un error, ya que lleva un tiempo ejecutarlo hasta el final. En mi entorno Linux, ejecuto mi programa desde una terminal y uso Ctrl + C para matarlo. Con el multiprocesamiento, esto hace que se maten todos los procesos, pero nunca recibo el mensaje bash, y tengo que cerrar el terminal y abrir uno nuevo (y volver a mi directorio de trabajo), lo cual es bastante molesto. ¿Hay alguna forma de evitar esto?Eliminando un programa usando multiprocesamiento

+0

¿Podría darnos una muestra de lo que está tratando de lograr? – hyperboreean

+0

Ver este hilo: http://stackoverflow.com/questions/1408356/keyboard-interrupts-with-pythons-multiprocessing-pool – wchung

Respuesta

21

pulse Ctrl-Z para suspender el proceso de Python, y luego hacer kill %1 para matarlo. También puede presionar Ctrl- \ (barra diagonal inversa), pero eso puede hacer que el proceso deje un archivo central.

+2

+1: A veces con programas multiproceso/multiproceso tienes que 'matar -9% 1' que mal chico. – jathanism

2

Pero, espere ... ¿no hay una forma de manejar el evento KeyboardException para matar los procesos en el grupo?

me trataron:

except KeyboardInterrupt as e: # Ctrl-C 
    print("Killing all the children in the pool.") 
    pool.close() 
    pool.terminate() 
    return 1 
    # raise e 

Pero no parece funcionar.

+3

Me encantaría saber cómo hacer que esto funcione. –

Cuestiones relacionadas