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?
96
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?
ctrl+c
sollte es töten. Alternativ istkill -9
esAntworten:
Um Ihr Programm zu stoppen, drücken Sie einfach Control + C.
quelle
^C
im Terminal angezeigt, und der Systemmonitor zeigte an, dass Python immer noch viel CPUCtrl + 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 habenCtrl + Z
. Wenn Sie es fortsetzen möchten, führen Sie es ausfg
.Sie können dies auch tun, wenn Sie die
exit()
Funktion in Ihrem Code verwenden. Idealer können Sie tunsys.exit()
.sys.exit()
was könnte Python beenden , auch wenn Sie Dinge parallel durch das laufenmultiprocessing
Paket.Hinweis: Um das zu verwenden
sys.exit()
, müssen Sie es importieren:import sys
quelle
sys.exit(1)
der Prozess nicht gestoppt wird. Ich habe im Grunde mehrere Threads und jeder von ihnen blockiert externe Prozesse, die von gestartet wurdenPopen
. 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. Einexcept KeyboardInterrupt:
Block oder so etwas wie ein nackter Blockexcept:
verhindert jedoch, dass dieser Mechanismus die Ausführung des Skripts tatsächlich stoppt.Wenn dies
KeyboardInterrupt
nicht funktioniert, können Sie manchmalSIGBREAK
stattdessen ein Signal senden . Unter Windows kann CTRL+ Pause/Breakvom Interpreter verarbeitet werden, ohne dass eine abfangbareKeyboardInterrupt
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 beendenkill %1
. (Wenn Sie es erneut ausführen möchten, können Sie den Job im Vordergrund fortsetzen, indemfg %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, undkill <pid>
senden Sie dann einSIGTERM
Signal.Der
kill
Befehl unter UnixSIGTERM
wird standardmäßig gesendet, und ein Python-Programm kann einen Signalhandler für dieSIGTERM
Verwendung dessignal
Moduls installieren . Theoretisch sollte jeder Signalhandler fürSIGTERM
den Prozess ordnungsgemäß beenden. Aber manchmal, wenn der Prozess stecken bleibt (z. B. in einem unterbrechungsfreien E / A-Ruhezustand blockiert), hat einSIGTERM
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 alskill -9
da9
ist der numerische Wert derSIGKILL
Konstante. Über die Befehlszeile können Siekill -KILL <pid>
(oderkill -9 <pid>
kurz) ein sendenSIGKILL
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, denpython.exe
Prozess zu finden, der Ihrem Programm entspricht, und auf die Schaltfläche "Prozess beenden" zu klicken. Sie können dentaskkill
Befehl auch für ähnliche Zwecke verwenden.quelle
Ctrl + C
.exit()
können Sie es tun.pkill -f name-of-the-python-script
.quelle
python script.py&
Strg-Pause ist leistungsfähiger als Strg-C
quelle
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 verwendensys.exit()
Sie die Stelle, an der Sie das Programm beenden möchten.quelle
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):
Sie können auch verwenden:
oder:
oder:
quelle
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.
quelle
jobs
oderps
bis dahinkill 8923754
oder welche Job-ID / Prozess-ID Sie töten müssenWenn auf einem Linux-Terminal ein Python-Skript ausgeführt wird, funktioniert STRG + \. (nicht CRTL + C oder D)
quelle
Control+ Dfunktioniert für mich unter Windows 10. Auch das Setzen
exit()
am Ende funktioniert.quelle
Sie können auch den verwenden
Activity Monitor
, um den Py-Prozess zu stoppenquelle
exit () beendet den Kernel, wenn Sie sich in Jupyter Notebook befinden, daher ist dies keine gute Idee.
raise
Befehl stoppt das Programm.quelle
Um Ihr Programm zu stoppen, drücken Sie einfach CTRL+D
oder
exit()
.quelle
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.
quelle
Wenn Sie mit Spyder arbeiten, verwenden Sie STRG +. (DOT) und Sie werden den Kernel neu starten, außerdem werden Sie das Programm stoppen.
quelle
Windows-Lösung: Control + C.
Macbook-Lösung: Control (^) + C.
Eine andere Möglichkeit besteht darin, ein Terminal zu öffnen, den Prozess, den Sie beenden möchten , einzugeben
top
, aufzuschreibenPID
und dann auf dem Terminal einzugeben:kill -9 <pid>
quelle