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?
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?
Odpowiedzi:
Aby zatrzymać program, po prostu naciśnij Control + C.
^Cw 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 %ngdzie „n” jest liczbą, którą otrzymałeś obok „Zatrzymano” po naciśnięciu Ctrl + Z. Jeśli chcesz go wznowić, biegnij fg.
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 w multiprocessingpakiecie.
Uwaga: aby użyć programu sys.exit(), musisz go zaimportować:import sys
sys.exit(1)nie zatrzymują procesu. Zasadniczo mam wiele wątków, a każdy z nich blokuje zewnętrzne procesy uruchomione przez Popen. 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 KeyboardInterruptwyjątku w głównym wątku.
Jeśli program w Pythonie go nie złapie, KeyboardInterruptspowoduje to zamknięcie Pythona. Jednak except KeyboardInterrupt:blok lub coś w rodzaju gołego except:zapobiegnie faktycznemu zatrzymaniu skryptu przez ten mechanizm.
Czasami, jeśli KeyboardInterruptnie działa, możesz SIGBREAKzamiast tego wysłać sygnał; w systemie Windows CTRL+ Pause/Breakmoże być obsługiwane przez interpreter bez generowania przechwytywalnego KeyboardInterruptwyją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ć jobsdo wyświetlenia zawieszonych zadań i możesz zabić pierwsze zawieszone zadanie kill %1. (Jeśli chcesz go ponownie uruchomić, możesz kontynuować zadanie na pierwszym planie, używając fg %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 pythondo sprawdzenia, które procesy Pythona są uruchomione, a następnie użyj kill <pid>do wysłania SIGTERMsygnału.
killKomenda wysyła na Unix SIGTERMdomyślnie, a program można zainstalować Python obsługi sygnału za SIGTERMpomocą signalmodułu. Teoretycznie każdy program obsługujący sygnał SIGTERMpowinien z wdziękiem zakończyć proces. Ale czasami, jeśli proces utknie (na przykład jest zablokowany w nieprzerywalnym stanie uśpienia IO), SIGTERMsygnał 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ć SIGKILLsygnał, czasami określany jako kill -9ponieważ 9jest wartością liczbową SIGKILLstałej. Z wiersza poleceń możesz użyć kill -KILL <pid>(lub kill -9 <pid>w skrócie), aby wysłać a SIGKILLi 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ą TerminateProcessfunkcji. Interaktywnie najłatwiej to zrobić, otwierając Menedżera zadań, znajdując python.exeproces odpowiadający Twojemu programowi i klikając przycisk „Zakończ proces”. Możesz również użyć taskkillpolecenia do podobnych celów.
Ctrl + C.exit()możesz to zrobić.pkill -f name-of-the-python-script.python script.py&
Ctrl-Break jest potężniejszy niż Ctrl-C
Aby zatrzymać działający program, użyj Ctrl+, Caby zakończyć proces.
Aby obsłużyć to programowo w Pythonie, zaimportuj sysmoduł i użyj sys.exit()miejsca, w którym chcesz zakończyć program.
import sys
sys.exit()
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:
exit()
lub:
raise SystemExit
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.
jobslub pswtedy kill 8923754lub jakikolwiek identyfikator zadania / identyfikator procesu, który musisz zabić
Control+ Ddziała u mnie w systemie Windows 10. exit()Działa też umieszczanie na końcu.
exit () zabije jądro, jeśli jesteś w Jupyter Notebook, więc nie jest to dobry pomysł. raisepolecenie zatrzyma program.
Aby zatrzymać program, po prostu naciśnij CTRL+D
lub exit().
Naciśnij Ctrl+ Alt+, Deletea pojawi się Menedżer zadań. Znajdź uruchomione polecenie Pythona, kliknij je prawym przyciskiem myszy i kliknij Zatrzymaj lub Zabij.
ctrl+cpowinien go zabić. Alternatywnie,kill -9to