Capture Ctrl + C / SIGINT y salga de multiprocesos con gracia en Python
¿Cómo puedo capturar un Ctrl + C en el programa Python multiproceso y salir de todos los procesos con gracia? Necesito la solución para trabajar tanto en Unix como en Windows He intentado lo siguiente:
import multiprocessing
import time
import signal
import sys
jobs = []
def worker():
signal.signal(signal.SIGINT, signal_handler)
while(True):
time.sleep(1.1234)
print "Working..."
def signal_handler(signal, frame):
print 'You pressed Ctrl+C!'
# for p in jobs:
# p.terminate()
sys.exit(0)
if __name__ == "__main__":
for i in range(50):
p = multiprocessing.Process(target=worker)
jobs.append(p)
p.start()
Y está funcionando, pero no creo que sea la solución correcta.
EDITAR: Esto podría ser un duplicado deéste