9 ответов:
в Windows, единственный верный способ-использовать Ctrlперерыв. Останавливает каждый скрипт python мгновенно!
(обратите внимание, что на некоторых клавиатурах, "перерыв" обозначено как "пауза".)
клавишей Ctrl + c в то время как программа python работает заставит python поднять KeyboardInterupt исключения. Вполне вероятно, что программа, которая делает много HTTP-запросов будет много кода обработки исключений. Если исключающая часть блока try-except не указывает, какие исключения он должен поймать, он будет ловить все исключения, включая KeyboardInterupt, который вы только что вызвали. Правильно закодированная программа python будет использовать элемент иерархия исключений python и только ловить исключения, которые являются производными от exception.
#This is the wrong way to do things try: #Some stuff might raise an IO exception except: #Code that ignores errors #This is the right way to do things try: #Some stuff might raise an IO exception except Exception: #This won't catch KeyboardInteruptЕсли вы не можете изменить код (или нужно убить программу, чтобы ваши изменения вступили в силу), то вы можете попробовать нажать Ctrl + c быстро. Первое из исключений KeyboardInterupt выбьет вашу программу из блока try и, надеюсь, одно из более поздних исключений KeyboardInterrupt будет вызвано, когда программа за пределами блока try.
если он работает в оболочке Python используйте Ctrl + Z, в противном случае найдите
pythonпроцесс и убить его.
процесс прерывания зависит от оборудования и ОС. Таким образом, у вас будет очень разное поведение в зависимости от того, где вы запускаете свой скрипт python. Например, на машинах Windows у нас есть Ctrl+C (
SIGINT) и Ctrl+перерыв (SIGBREAK).таким образом, пока SIGINT присутствует на всех системах и может быть обработан и пойман, сигнал SIGBREAK является специфичным для Windows (и может быть отключен в CONFIG.SYS) и действительно обрабатывается BIOS как вектор прерывания INT 1Bh, именно поэтому этот ключ гораздо более мощный, чем любой другой. Поэтому, если вы используете некоторые *Nix ароматизированные ОС, вы получите разные результаты в зависимости от реализации, так как этот сигнал там отсутствует, но другие есть. В Linux вы можете проверить, какие сигналы доступны вам:
$ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGEMT 8) SIGFPE 9) SIGKILL 10) SIGBUS 11) SIGSEGV 12) SIGSYS 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGURG 17) SIGSTOP 18) SIGTSTP 19) SIGCONT 20) SIGCHLD 21) SIGTTIN 22) SIGTTOU 23) SIGIO 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGPWR 30) SIGUSR1 31) SIGUSR2 32) SIGRTMAXтак что если вы хотите поймать
CTRL+BREAKсигнал в системе linux вам нужно будет проверить, к чему сигнал POSIX они нанесли этот ключ на карту. Популярные сопоставления:CTRL+\ = SIGQUIT CTRL+D = SIGQUIT CTRL+C = SIGINT CTRL+Z = SIGTSTOP CTRL+BREAK = SIGKILL or SIGTERM or SIGSTOPв самом деле, многие другие функции доступны под Linux, где SysRq (системный запрос) ключ может взять на себя собственная жизнь...
этот пост старый, но я недавно столкнулся с той же проблемой
CTRL+Cне завершая скрипты python на моемLinux. Я использовалCTRL + \(SIGQUIT).
на терминале mac / in:
- показать инспектор (щелкните правой кнопкой мыши в окне терминала или оболочки >показать инспектор)
- нажмите на значок настроек выше "запущенные процессы"
- выберите из списка опций в разделе "Группа обработки сигнала" (Kill, terminate, interrupt и т. д.).
- принудительное закрытие программы с помощью Alt+F4 (выключает текущую программу)
- спам кнопку X на CMD для e. x.
- Taskmanager (сначала Windows+R, а затем "taskmgr"), а затем завершить задачу.
это может помочь.
Comments