2010-09-10 11 views
11

Sto utilizzando il modulo di multiprocessing per eseguire l'elaborazione parallela nel mio programma. Quando lo sto testando, vorrei spesso uccidere il programma in anticipo quando noto un bug, poiché ci vuole un po 'per essere eseguito fino al completamento. Nel mio ambiente Linux, eseguo il mio programma da un terminale e uso Ctrl + C per ucciderlo. Con il multiprocessing, questo causa la morte di tutti i processi, ma non riesco mai a riavere il prompt di bash e devo chiudere il terminale e aprirne uno nuovo (e tornare alla mia directory di lavoro) che è piuttosto fastidioso. C'è un modo per aggirarlo?Come uccidere un programma utilizzando il multiprocessing

+0

Potete fornire un esempio di ciò che state cercando di ottenere? – hyperboreean

+0

Vedi questo thread: http://stackoverflow.com/questions/1408356/keyboard-interrupts-with-pythons-multiprocessing-pool – wchung

risposta

21

premere Ctrl-Z per sospendere il processo di Python, poi fare kill %1 per ucciderlo. Puoi anche premere Ctrl- \ (backslash), ma questo potrebbe far sì che il processo lasci un file core.

+2

+1: A volte con programmi multithreaded/multiprocess devi 'kill -9% 1' che male ragazzo. – jathanism

2

Ma aspetta ... non c'è un modo per gestire l'evento KeyboardException per uccidere i processi nel pool?

ho provato:

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

Ma non sembra funzionare.

+3

Mi piacerebbe scoprire come farlo funzionare. –

Problemi correlati