Ich habe ein Programm in IDLE geschrieben, um Textdateien zu tokenisieren, und es beginnt, 349 Textdateien zu tokenisieren! Wie kann ich es aufhalten? Wie kann ich ein laufendes Python-Programm stoppen?
Ich habe ein Programm in IDLE geschrieben, um Textdateien zu tokenisieren, und es beginnt, 349 Textdateien zu tokenisieren! Wie kann ich es aufhalten? Wie kann ich ein laufendes Python-Programm stoppen?
Antworten:
Um Ihr Programm zu stoppen, drücken Sie einfach Control + C.
^Cim Terminal angezeigt, und der Systemmonitor zeigte an, dass Python immer noch viel CPU
Ctrl + Z(zumindest unter Linux). Wenn Sie es dann töten möchten, führen Sie aus, kill %nwobei "n" die Zahl ist, die Sie beim Drücken neben "Gestoppt" erhalten haben Ctrl + Z. Wenn Sie es fortsetzen möchten, führen Sie es aus fg.
Sie können dies auch tun, wenn Sie die exit()Funktion in Ihrem Code verwenden. Idealer können Sie tun sys.exit(). sys.exit()was könnte Python beenden , auch wenn Sie Dinge parallel durch das laufen multiprocessingPaket.
Hinweis: Um das zu verwenden sys.exit(), müssen Sie es importieren:import sys
sys.exit(1)der Prozess nicht gestoppt wird. Ich habe im Grunde mehrere Threads und jeder von ihnen blockiert externe Prozesse, die von gestartet wurden Popen. Ich brauche eine nukleare Option, um alle vom Python-Prozess erstellten Unterprozesse sowie den Python-Prozess selbst zu beenden. Bisher nicht gefunden.
Wenn Ihr Programm auf einer interaktiven Konsole ausgeführt wird, wird durch Drücken von CTRL+ Ceine KeyboardInterruptAusnahme im Hauptthread ausgelöst.
Wenn Ihr Python-Programm es nicht abfängt, KeyboardInterruptwird Python beendet. Ein except KeyboardInterrupt:Block oder so etwas wie ein nackter Block except:verhindert jedoch, dass dieser Mechanismus die Ausführung des Skripts tatsächlich stoppt.
Wenn dies KeyboardInterruptnicht funktioniert, können Sie manchmal SIGBREAKstattdessen ein Signal senden . Unter Windows kann CTRL+ Pause/Breakvom Interpreter verarbeitet werden, ohne dass eine abfangbare KeyboardInterruptAusnahme generiert wird .
Diese Mechanismen funktionieren jedoch hauptsächlich nur, wenn der Python-Interpreter ausgeführt wird und auf Betriebssystemereignisse reagiert. Wenn der Python-Interpreter aus irgendeinem Grund nicht reagiert, ist es am effektivsten, den gesamten Betriebssystemprozess zu beenden, auf dem der Interpreter ausgeführt wird. Der Mechanismus hierfür variiert je nach Betriebssystem.
In einer Shell-Umgebung im Unix-Stil können Sie CTRL+ drücken Z, um den Prozess anzuhalten, der gerade die Konsole steuert. Sobald Sie die Shell-Eingabeaufforderung zurückerhalten, können Sie jobsangehaltene Jobs auflisten und den ersten angehaltenen Job mit beenden kill %1. (Wenn Sie es erneut ausführen möchten, können Sie den Job im Vordergrund fortsetzen, indem fg %1Sie Folgendes verwenden: Weitere Informationen finden Sie im Handbuch Ihrer Shell zur Jobsteuerung.)
Alternativ können Sie in einer Unix- oder Unix-ähnlichen Umgebung die PID (Prozess-ID) des Python-Prozesses finden und nach PID beenden. Verwenden Sie so etwas wie, ps aux | grep pythonum herauszufinden, welche Python-Prozesse ausgeführt werden, und kill <pid>senden Sie dann ein SIGTERMSignal.
Der killBefehl unter Unix SIGTERMwird standardmäßig gesendet, und ein Python-Programm kann einen Signalhandler für die SIGTERMVerwendung des signalModuls installieren . Theoretisch sollte jeder Signalhandler für SIGTERMden Prozess ordnungsgemäß beenden. Aber manchmal, wenn der Prozess stecken bleibt (z. B. in einem unterbrechungsfreien E / A-Ruhezustand blockiert), hat ein SIGTERMSignal keine Auswirkung, da der Prozess nicht einmal aufwachen kann, um damit umzugehen.
Um gewaltsam einen Prozess zu töten, der nicht auf Signale reagiert, müssen Sie senden SIGKILLSignal, manchmal als kill -9da 9ist der numerische Wert der SIGKILLKonstante. Über die Befehlszeile können Sie kill -KILL <pid>(oder kill -9 <pid>kurz) ein senden SIGKILLund den laufenden Prozess sofort stoppen.
Unter Windows verfügen Sie nicht über das Unix-System für Prozesssignale, können jedoch einen laufenden Prozess mithilfe der TerminateProcessFunktion zwangsweise beenden . Interaktiv ist es am einfachsten, den Task-Manager zu öffnen, den python.exeProzess zu finden, der Ihrem Programm entspricht, und auf die Schaltfläche "Prozess beenden" zu klicken. Sie können den taskkillBefehl auch für ähnliche Zwecke verwenden.
Ctrl + C.exit()können Sie es tun.pkill -f name-of-the-python-script.python script.py&
Strg-Pause ist leistungsfähiger als Strg-C
Um ein laufendes Programm zu stoppen , beenden Sie den Vorgang mit STRG + C.
Um dies programmgesteuert in Python zu handhaben, importieren Sie das sysModul und verwenden sys.exit()Sie die Stelle, an der Sie das Programm beenden möchten.
import sys
sys.exit()
So stoppen Sie ein Python-Skript über die Tastatur: Ctrl+C
So stoppen Sie die Verwendung von Code (Dies hat bei Python 3 bei mir funktioniert):
import os
os._exit(0)
Sie können auch verwenden:
import sys
sys.exit()
oder:
exit()
oder:
raise SystemExit
Strg + Z sollte es tun, wenn Sie in der Python-Shell gefangen sind. Beachten Sie, dass Instanzen des Skripts weiterhin im Hintergrund ausgeführt werden können. Unter Linux müssen Sie den entsprechenden Prozess beenden.
jobsoder psbis dahin kill 8923754oder welche Job-ID / Prozess-ID Sie töten müssen
Control+ Dfunktioniert für mich unter Windows 10. Auch das Setzen exit()am Ende funktioniert.
exit () beendet den Kernel, wenn Sie sich in Jupyter Notebook befinden, daher ist dies keine gute Idee. raiseBefehl stoppt das Programm.
Um Ihr Programm zu stoppen, drücken Sie einfach CTRL+D
oder exit().
Drücken Sie Ctrl+ Alt+ Deleteund der Task-Manager wird angezeigt. Suchen Sie den ausgeführten Python-Befehl, klicken Sie mit der rechten Maustaste darauf und klicken Sie auf Stop oder Kill.
ctrl+csollte es töten. Alternativ istkill -9es