Я написав програму в IDLE для токенізації текстових файлів, і вона починає токенізувати 349 текстових файлів! Як я можу це зупинити? Як я можу зупинити запущену програму Python?
Я написав програму в IDLE для токенізації текстових файлів, і вона починає токенізувати 349 текстових файлів! Як я можу це зупинити? Як я можу зупинити запущену програму Python?
Відповіді:
Щоб зупинити програму, просто натисніть Control + C.
^C
в терміналі, а системний монітор показав, що python все ще використовує багато процесора ...
Ctrl + Z
(принаймні в Linux). Потім, якщо ви хочете його вбити, запустіть, kill %n
де "n" - це число, яке ви отримали поруч із "Зупинено" при натисканні Ctrl + Z
. Якщо ви хочете відновити його, запустіть fg
.
Ви також можете це зробити, якщо використовуєте exit()
функцію у своєму коді. В ідеалі ви можете це зробити sys.exit()
. sys.exit()
що може завершити роботу Python, навіть якщо ви паралельно запускаєте речі через multiprocessing
пакет.
Примітка: Для того, щоб використовувати sys.exit()
, ви повинні імпортувати його:import sys
sys.exit(1)
процес не зупиняється. В основному у мене кілька потоків, і кожен з них блокує зовнішні процеси, запущені Popen
. Мені потрібен ядерний варіант, щоб знищити всі підпроцеси, створені процесом Python, а також сам процес Python. Не знайшов поки.
Якщо ваша програма працює на інтерактивній консолі, натискання CTRL+ Cвикликає KeyboardInterrupt
виняток у основному потоці.
Якщо ваша програма Python його не вловлює, це KeyboardInterrupt
призведе до виходу Python. Однак except KeyboardInterrupt:
блок, або щось на зразок голого except:
, буде заважати цьому механізму фактично зупиняти запуск сценарію.
Іноді, якщо KeyboardInterrupt
не працює, SIGBREAK
замість цього можна надіслати сигнал; у Windows, CTRL+ Pause/Breakможе оброблятися інтерпретатором без генерування вловлюваного KeyboardInterrupt
винятку.
Однак ці механізми в основному працюють, лише якщо інтерпретатор Python працює і реагує на події операційної системи. Якщо інтерпретатор Python не реагує з якихось причин, найефективнішим способом є припинення всього процесу операційної системи, на якому запущений інтерпретатор. Механізм цього залежить від операційної системи.
У середовищі оболонки в стилі Unix ви можете натиснути CTRL+, Zщоб призупинити будь-який процес, який зараз контролює консоль. Після того, як ви отримаєте підказку оболонки назад, ви можете використовувати jobs
для переліку припинених завдань, і ви можете вбити перше призупинене завдання за допомогою kill %1
. (Якщо ви хочете знову запустити його, ви можете продовжити роботу на передньому плані, використовуючи fg %1
; для отримання додаткової інформації прочитайте посібник вашої оболонки з управління завданнями.)
Крім того, в Unix або Unix-подібному середовищі ви можете знайти PID процесу Python (ідентифікатор процесу) і вбити його за допомогою PID. Використовуйте щось на зразок, ps aux | grep python
щоб знайти, які процеси Python запущені, а потім використовуйте kill <pid>
для надсилання SIGTERM
сигналу.
kill
Команда на Unix відправляє SIGTERM
за замовчуванням, і програма Python може встановити обробник сигналу для SIGTERM
використання signal
модуля. Теоретично, будь-який обробник сигналу SIGTERM
повинен витончено вимкнути процес. Але іноді, якщо процес застряг (наприклад, заблокований у режимі безперебійного вводу-виводу), SIGTERM
сигнал не має ефекту, оскільки процес навіть не може прокинутися, щоб його обробити.
Щоб примусово вбити процес, який не реагує на сигнали, вам потрібно надіслати SIGKILL
сигнал, який іноді називають так, kill -9
оскільки 9
це числове значення SIGKILL
константи. За допомогою командного рядка ви можете скористатися kill -KILL <pid>
(або kill -9 <pid>
коротше) для надсилання SIGKILL
та негайного зупинення запущеного процесу.
У Windows у вас немає системи процесорних сигналів Unix, але ви можете примусово припинити запущений процес, використовуючи TerminateProcess
функцію. Інтерактивно найпростіший спосіб зробити це - відкрити диспетчер завдань, знайти python.exe
процес, який відповідає вашій програмі, і натиснути кнопку «Завершити процес». Ви також можете використовувати taskkill
команду для подібних цілей.
Ctrl + C
.exit()
ви можете це зробити.pkill -f name-of-the-python-script
.python script.py&
Ctrl-Break це потужніше, ніж Ctrl-C
Щоб зупинити скрипт python за допомогою клавіатури: Ctrl
+C
Щоб зупинити його за допомогою коду (це працювало у мене на Python 3):
import os
os._exit(0)
Ви також можете використовувати:
import sys
sys.exit()
або:
exit()
або:
raise SystemExit
Ctrl + Z повинен це зробити, якщо ви потрапили в оболонку python. Майте на увазі, що екземпляри сценарію можуть продовжувати працювати у фоновому режимі, тому під Linux вам потрібно вбити відповідний процес.
jobs
або ps
тоді, kill 8923754
або будь-який ідентифікатор вакансії / процесу, який вам потрібно вбити
Control+ Dпрацює для мене у Windows 10. Крім того, ставлення exit()
в кінці також працює.
Щоб зупинити програму, просто натисніть CTRL+D
або exit()
.
Натисніть Ctrl+ Alt+, Deleteі з'явиться диспетчер завдань. Знайдіть запущену команду Python, клацніть на ній правою кнопкою миші та натисніть Зупинити або Вбити.
ctrl+c
повинен його вбити. Як варіант,kill -9
це