Napisałem program w IDLE do tokenizacji plików tekstowych i zaczyna tokeniza 349 plików tekstowych! Jak mogę to zatrzymać? Jak mogę zatrzymać działający program w języku Python?
106
Napisałem program w IDLE do tokenizacji plików tekstowych i zaczyna tokeniza 349 plików tekstowych! Jak mogę to zatrzymać? Jak mogę zatrzymać działający program w języku Python?
ctrl+c
powinien go zabić. Alternatywnie,kill -9
toOdpowiedzi:
Aby zatrzymać program, po prostu naciśnij Control + C.
źródło
^C
w terminalu, a monitor systemu pokazał, że Python nadal zużywa dużo procesora ...Ctrl + Z
(przynajmniej na Linuksie). Następnie, jeśli chcesz go zabić, biegnij,kill %n
gdzie „n” jest liczbą, którą otrzymałeś obok „Zatrzymano” po naciśnięciuCtrl + Z
. Jeśli chcesz go wznowić, biegnijfg
.Możesz to również zrobić, jeśli używasz
exit()
funkcji w swoim kodzie. Bardziej idealnie, możesz to zrobićsys.exit()
.sys.exit()
co może zakończyć działanie Pythona, nawet jeśli uruchamiasz rzeczy równolegle wmultiprocessing
pakiecie.Uwaga: aby użyć programu
sys.exit()
, musisz go zaimportować:import sys
źródło
sys.exit(1)
nie zatrzymują procesu. Zasadniczo mam wiele wątków, a każdy z nich blokuje zewnętrzne procesy uruchomione przezPopen
. Potrzebuję opcji jądrowej, aby zabić wszystkie procesy podrzędne utworzone przez proces Pythona, a także sam proces Pythona. Nie znalazłem do tej pory.Jeśli twój program działa na konsoli interaktywnej, naciśnięcie CTRL+ Cspowoduje zgłoszenie
KeyboardInterrupt
wyjątku w głównym wątku.Jeśli program w Pythonie go nie złapie,
KeyboardInterrupt
spowoduje to zamknięcie Pythona. Jednakexcept KeyboardInterrupt:
blok lub coś w rodzaju gołegoexcept:
zapobiegnie faktycznemu zatrzymaniu skryptu przez ten mechanizm.Czasami, jeśli
KeyboardInterrupt
nie działa, możeszSIGBREAK
zamiast tego wysłać sygnał; w systemie Windows CTRL+ Pause/Breakmoże być obsługiwane przez interpreter bez generowania przechwytywalnegoKeyboardInterrupt
wyjątku.Jednak te mechanizmy działają głównie tylko wtedy, gdy interpreter języka Python działa i reaguje na zdarzenia systemu operacyjnego. Jeśli interpreter języka Python z jakiegoś powodu nie odpowiada, najskuteczniejszym sposobem jest zakończenie całego procesu systemu operacyjnego, na którym działa interpreter. Mechanizm tego zależy od systemu operacyjnego.
W środowisku powłoki w stylu uniksowym możesz nacisnąć CTRL+, Zaby zawiesić dowolny proces aktualnie kontrolujący konsolę. Po odzyskaniu zachęty powłoki możesz użyć
jobs
do wyświetlenia zawieszonych zadań i możesz zabić pierwsze zawieszone zadaniekill %1
. (Jeśli chcesz go ponownie uruchomić, możesz kontynuować zadanie na pierwszym planie, używającfg %1
; więcej informacji można znaleźć w instrukcji obsługi powłoki).Alternatywnie, w środowisku uniksowym lub uniksopodobnym można znaleźć PID procesu Pythona (identyfikator procesu) i zabić go za pomocą PID. Użyj czegoś podobnego
ps aux | grep python
do sprawdzenia, które procesy Pythona są uruchomione, a następnie użyjkill <pid>
do wysłaniaSIGTERM
sygnału.kill
Komenda wysyła na UnixSIGTERM
domyślnie, a program można zainstalować Python obsługi sygnału zaSIGTERM
pomocąsignal
modułu. Teoretycznie każdy program obsługujący sygnałSIGTERM
powinien z wdziękiem zakończyć proces. Ale czasami, jeśli proces utknie (na przykład jest zablokowany w nieprzerywalnym stanie uśpienia IO),SIGTERM
sygnał nie ma wpływu, ponieważ proces nie może nawet obudzić się, aby go obsłużyć.Aby wymusić zabicie procesu, który nie reaguje na sygnały, musisz wysłać
SIGKILL
sygnał, czasami określany jakokill -9
ponieważ9
jest wartością liczbowąSIGKILL
stałej. Z wiersza poleceń możesz użyćkill -KILL <pid>
(lubkill -9 <pid>
w skrócie), aby wysłać aSIGKILL
i natychmiast zatrzymać proces.W systemie Windows nie masz systemu Unix sygnałów procesowych, ale możesz wymusić zakończenie działającego procesu za pomocą
TerminateProcess
funkcji. Interaktywnie najłatwiej to zrobić, otwierając Menedżera zadań, znajdującpython.exe
proces odpowiadający Twojemu programowi i klikając przycisk „Zakończ proces”. Możesz również użyćtaskkill
polecenia do podobnych celów.źródło
Ctrl + C
.exit()
możesz to zrobić.pkill -f name-of-the-python-script
.źródło
python script.py&
Ctrl-Break jest potężniejszy niż Ctrl-C
źródło
Aby zatrzymać działający program, użyj Ctrl+, Caby zakończyć proces.
Aby obsłużyć to programowo w Pythonie, zaimportuj
sys
moduł i użyjsys.exit()
miejsca, w którym chcesz zakończyć program.import sys sys.exit()
źródło
Aby zatrzymać skrypt Pythona za pomocą klawiatury:
Ctrl
+C
Aby zatrzymać to za pomocą kodu (zadziałało to dla mnie w Pythonie 3):
import os os._exit(0)
możesz także użyć:
import sys sys.exit()
lub:
lub:
raise SystemExit
źródło
Ctrl + Z powinno to zrobić, jeśli zostaniesz złapany w powłoce Pythona. Należy pamiętać, że instancje skryptu mogą nadal działać w tle, więc pod Linuksem musisz zabić odpowiedni proces.
źródło
jobs
lubps
wtedykill 8923754
lub jakikolwiek identyfikator zadania / identyfikator procesu, który musisz zabićKiedy mam skrypt Pythona działający na terminalu Linux, CTRL + \ działa. (nie CRTL + C ani D)
źródło
Control+ Ddziała u mnie w systemie Windows 10.
exit()
Działa też umieszczanie na końcu.źródło
exit () zabije jądro, jeśli jesteś w Jupyter Notebook, więc nie jest to dobry pomysł.
raise
polecenie zatrzyma program.źródło
możesz także użyć,
Activity Monitor
aby zatrzymać proces pyźródło
Aby zatrzymać program, po prostu naciśnij CTRL+D
lub
exit()
.źródło
Naciśnij Ctrl+ Alt+, Deletea pojawi się Menedżer zadań. Znajdź uruchomione polecenie Pythona, kliknij je prawym przyciskiem myszy i kliknij Zatrzymaj lub Zabij.
źródło
Jeśli pracujesz ze Spyderem, użyj CTRL +. (DOT) i zrestartujesz jądro, a także zatrzymasz program.
źródło
Rozwiązanie Windows: Control + C.
Rozwiązanie Macbook: Control (^) + C.
Innym sposobem jest otwarcie terminala, wpisanie
top
, zapisaniePID
procesu, który chcesz zabić, a następnie wpisanie na terminalu:kill -9 <pid>
źródło