Tastatur-Interrupts mit python-multiprocessing-Pool

Wie kann ich damit umgehen KeyboardInterrupt Veranstaltungen mit python-multiprocessing-Pools? Hier ist ein einfaches Beispiel:

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()

Beim ausführen des Codes über die KeyboardInterrupt ausgelöst wird, wenn ich drücken Sie ^C, aber der Prozess hängt einfach an diesem Punkt und ich habe es zu töten extern.

Ich möchte in der Lage sein zu drücken ^C zu jeder Zeit und dazu führen, dass alle Prozesse ordnungsgemäß beendet werden.

Ich löste mein problem mit psutil, können Sie sehen, die Lösung hier: stackoverflow.com/questions/32160054/...

InformationsquelleAutor Fragsworth | 2009-09-10

Schreibe einen Kommentar