Прерывания клавиатуры с помощью многопроцессорного пула Python

Как я могу обрабатывать события KeyboardInterrupt с Python 'мультипроцессорные пулы? Вот простой пример:

from multiprocessing import Pool
from time import sleep
from sys import exit

def slowly_square(i):
    sleep(1)
    return i*i

def go():
    pool = Pool(8)
    try:
        results = pool.map(slowly_square, range(40))
    except KeyboardInterrupt:
        # **** THIS PART NEVER EXECUTES. ****
        pool.terminate()
        print "You cancelled the program!"
        sys.exit(1)
    print "\nFinally, here are the results: ", results

if __name__ == "__main__":
    go()

При запуске кода выше,KeyboardInterrupt поднимается, когда я нажимаю^C, но процесс просто зависает в этот момент, и я должен убить его извне.

Я хочу быть в состоянии нажать^C в любое время и изящно завершить все процессы.

Ответы на вопрос(10)

Ваш ответ на вопрос