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.
^C
im 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 %n
wobei "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 multiprocessing
Paket.
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 KeyboardInterrupt
Ausnahme im Hauptthread ausgelöst.
Wenn Ihr Python-Programm es nicht abfängt, KeyboardInterrupt
wird 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 KeyboardInterrupt
nicht funktioniert, können Sie manchmal SIGBREAK
stattdessen ein Signal senden . Unter Windows kann CTRL+ Pause/Breakvom Interpreter verarbeitet werden, ohne dass eine abfangbare KeyboardInterrupt
Ausnahme 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 jobs
angehaltene 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 %1
Sie 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 python
um herauszufinden, welche Python-Prozesse ausgeführt werden, und kill <pid>
senden Sie dann ein SIGTERM
Signal.
Der kill
Befehl unter Unix SIGTERM
wird standardmäßig gesendet, und ein Python-Programm kann einen Signalhandler für die SIGTERM
Verwendung des signal
Moduls installieren . Theoretisch sollte jeder Signalhandler für SIGTERM
den Prozess ordnungsgemäß beenden. Aber manchmal, wenn der Prozess stecken bleibt (z. B. in einem unterbrechungsfreien E / A-Ruhezustand blockiert), hat ein SIGTERM
Signal 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 SIGKILL
Signal, manchmal als kill -9
da 9
ist der numerische Wert der SIGKILL
Konstante. Über die Befehlszeile können Sie kill -KILL <pid>
(oder kill -9 <pid>
kurz) ein senden SIGKILL
und 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 TerminateProcess
Funktion zwangsweise beenden . Interaktiv ist es am einfachsten, den Task-Manager zu öffnen, den python.exe
Prozess zu finden, der Ihrem Programm entspricht, und auf die Schaltfläche "Prozess beenden" zu klicken. Sie können den taskkill
Befehl 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 sys
Modul 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.
jobs
oder ps
bis dahin kill 8923754
oder 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. raise
Befehl 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+c
sollte es töten. Alternativ istkill -9
es