Ich möchte den Multiprozessor-Pool von Python mit Strg + C (KeyboardInterrupt) beenden.

Problem

Wenn Sie den Multiprozessor-Pool von Python normal und Strg + C während der Ausführung schreiben, wird der Prozess nicht beendet und bleibt hängen.

pool.py


import time
from multiprocessing import Pool

def worker(arg):
    print("process {}".format(arg))
    time.sleep(2)

if __name__ == '__main__':
    p = Pool(2)
    p.map(worker, range(6))
    p.close()

(Wenn Sie beim Ausführen der obigen Quelle Strg + C drücken)

(Abkürzung)
KeyboardInterrupt

(Es wird in diesem Zustand aufhören)

Selbst wenn ich die Prozess-ID spezifiziere und töte, wird Python wie ein Zombie wiederbelebt. Ich möchte es irgendwie sauber mit Strg + C beenden.

Ursache

Jemand hatte genau das gleiche Problem mit StackOverflow. https://stackoverflow.com/questions/1408356/keyboard-interrupts-with-pythons-multiprocessing-pool

Es scheint, dass die Eingabe von KeyboardInterrupt nicht an den im Pool aufgerufenen Prozess übertragen wird und die Wartefunktion für immer wartet.

Lösungen

Es ist in Ordnung, wenn Sie eine Zeitüberschreitung festlegen.

p.map(worker, range(6))

Zu

p.map_async(worker, range(6)).get(9999999)

Ersetzen mit.

Recommended Posts

Ich möchte den Multiprozessor-Pool von Python mit Strg + C (KeyboardInterrupt) beenden.
Ich möchte Pythons ungelöste Importwarnung mit vsCode entfernen
Ich möchte ○○ mit Pandas machen
Ich möchte mit Python debuggen
Ich möchte Objekte mit OpenCV erkennen
Ich möchte einen Blog mit Jupyter Notebook schreiben
Ich möchte eine Pip-Installation mit PythonAnywhere durchführen
Ich möchte Protokolle mit Python analysieren
Ich möchte mit aws mit Python spielen
Ich möchte MATLAB feval mit Python verwenden
Ich möchte datetime.datetime.now () auch mit pytest verspotten!
Ich möchte mehrere Bilder mit matplotlib anzeigen.
Ich möchte 100 Datenwissenschaften mit Colaboratory schlagen
Ich möchte ein Spiel mit Python machen
Ich möchte OREMO mit setParam sein!
Ich möchte Temporäres Verzeichnis mit Python2 verwenden
Ich möchte -inf nicht mit np.log verwenden
#Unresolved Ich möchte Gobject-Introspection mit Python3 kompilieren
Ich möchte ip vrf mit SONiC verwenden
Ich möchte APG4b mit Python lösen (Kapitel 2)
Ich möchte mit Djangos Migrate von vorne beginnen
Ich möchte C ++ - Code aus Python-Code erstellen!
Ich möchte mit Python in eine Datei schreiben
Ich möchte ein Bild mit Lollipop in WebP konvertieren
Ich möchte mit Jubatus (1) eine nicht autorisierte Anmeldung bei Facebook erkennen.
Ich möchte mit einem Knopf am Kolben übergehen
Ich möchte die Optimierung mit Python und CPlex behandeln
Ich möchte mit verstärkendem Lernen einen Berg besteigen
Ich möchte mit Python-Datenklasse nach hinten erben
Ich möchte mit einem Roboter in Python arbeiten.
Ich möchte eine Zeichenkette mit Hiragana teilen
Ich möchte Lambda mit Python auf Mac AWS!
Ich möchte manuell eine Legende mit matplotlib erstellen
[TensorFlow] Ich möchte Fenster mit Ragged Tensor verarbeiten
Ich möchte einen Quantencomputer mit Python betreiben
Ich möchte eine lokale Variable mit Lambda binden
Ich möchte Daten mit Python analysieren können (Teil 3)
Ich möchte R-Funktionen einfach mit ipython notebook verwenden
Ich möchte eine andere Version von Python mit pyvenv angeben
Ich möchte Daten mit Python analysieren können (Teil 1)
Ich möchte einen Blog-Editor mit dem Administrator von Django erstellen
Ich möchte eine Jupyter-Umgebung mit einem Befehl starten
[NetworkX] Ich möchte nach Knoten mit bestimmten Attributen suchen
Ich möchte ein Klickmakro mit pyautogui (Wunsch) erstellen.
Ich möchte mit Numpy die japanische Flagge in die Palau-Flagge ändern
Ich möchte Daten mit Python analysieren können (Teil 4)
Ich möchte mit GAN Schwarzweißfotos von Erinnerungen ausmalen
Ich möchte Daten mit Python analysieren können (Teil 2)
Ich möchte automatisch an Online-Kursen mit Python + Selen teilnehmen!
Ich möchte ein Klickmakro mit pyautogui (Outlook) erstellen.
[Python] Ich möchte die Option -h mit argparse verwenden
Ich möchte eine virtuelle Umgebung mit Jupyter Notebook verwenden!
Ich möchte das Paket aus den Anforderungen.txt mit Poesie installieren
[Visualisierung] Ich möchte mit Plotly ein schönes Diagramm zeichnen
Ich möchte SUDOKU lösen
Ich möchte einen Platzhalter verwenden, den ich mit Python entfernen möchte