Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Killing a program using multiprocessing

Tags:

python

I'm using the multiprocessing module to do parallel processing in my program. When I'm testing it, I'll often want to kill the program early when I notice a bug, since it takes a while to run to completion. In my Linux environment, I run my program from a terminal, and use Ctrl+C to kill it. With multiprocessing, this causes all the processes to be killed, but I never get the bash prompt back, and have to close the terminal and open a new one (and navigate back to my working directory) which is quite annoying. Is there any way to get around this?

like image 593
Colin Avatar asked Sep 10 '10 17:09

Colin


1 Answers

But wait ... isn't there a way of handling the KeyboardException event to kill the processes in the pool?

I tried:

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

But it doesn't seem to work.

like image 88
mathtick Avatar answered Nov 03 '22 16:11

mathtick