Я написал программу в IDLE для токенизации текстовых файлов, и она начинает tokeniza 349 текстовых файлов! Как я могу остановить его? Как я могу остановить запущенную программу Python?
ОТВЕТЫ
Ответ 1
Чтобы остановить программу, просто нажмите Control + C .
Ответ 2
Вы также можете сделать это, если вы используете функцию exit() в своем коде. Более идеально, вы можете сделать sys.exit() . sys.exit() может завершить работу Python, даже если вы запускаете вещи параллельно через пакет multiprocessing .
Ответ 3
Ctrl-Break он более мощный, чем Ctrl-C
Ответ 4
- Чтобы остановить python script, просто нажмите Ctrl + C .
- Внутри script с exit() вы можете это сделать.
- Вы можете сделать это в интерактивном script с просто выходом.
- Вы можете использовать pkill -f name-of-the-python-script .
Ответ 5
Если ваша программа работает на интерактивной консоли, нажатие CTRL + C вызовет исключение KeyboardInterrupt в главном потоке.
Автозапуск программ на python
Если ваша программа 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 ps aux | grep python для поиска запущенных процессов Python, а затем используйте kill для отправки сигнала SIGTERM .
Команда kill в Unix отправляет SIGTERM по умолчанию, и программа Python может установить обработчик сигнала для SIGTERM используя signal модуль. Теоретически, любой обработчик сигнала для SIGTERM должен SIGTERM завершить процесс. Но иногда, если процесс застрял (например, заблокирован в состоянии непрерывного ожидания ввода-вывода), сигнал SIGTERM не действует, потому что процесс не может даже проснуться, чтобы справиться с ним.
Как закрыть или завершить процесс, зависшую программу или вирус в командной строке
Чтобы принудительно завершить процесс, который не реагирует на сигналы, вам нужно отправить сигнал SIGKILL , который иногда называют kill -9 потому что 9 — это числовое значение константы SIGKILL . Из командной строки вы можете использовать kill -KILL (или kill -9 для краткости), чтобы отправить SIGKILL и немедленно остановить процесс.
В Windows у вас нет системы сигналов процессов Unix, но вы можете принудительно прервать запущенный процесс с помощью функции TerminateProcess . В интерактивном режиме самый простой способ сделать это — открыть диспетчер задач, найти процесс python.exe , соответствующий вашей программе, и нажать кнопку «Завершить процесс». Вы также можете использовать команду taskkill для аналогичных целей.
Ответ 6
Чтобы остановить запущенную программу, используйте CTRL + C, чтобы завершить процесс.
Чтобы обработать это программно в python, импортируйте модуль sys и используйте sys.exit() там, где вы хотите завершить программу.
import sys sys.exit()
Ответ 7
Ctrl + Z должен сделать это, если вы попали в оболочку Python. Имейте в виду, что экземпляры скрипта могут продолжать работать в фоновом режиме, поэтому в Linux вы должны будете завершить соответствующий процесс.
Ответ 8
Когда у меня работает скрипт Python на терминале Linux, CTRL +работает. (не CRTL + C или D)
Ответ 9
прерывание клавиатуры, т.е. Control+C
Ответ 10
вы также можете использовать Activity Monitor , чтобы остановить процесс py
Ответ 11
Чтобы остановить вашу программу, просто нажмите CTRL + D
Ответ 12
Control + D работает для меня в Windows 10. Кроме того, добавление exit() в конце также работает.
Ответ 13
Если вы работаете с Spyder, используйте CTRL +. (DOT) и вы перезапустите ядро, также вы остановите программу.
Ответ 14
Чтобы остановить скрипт Python с помощью клавиатуры: Ctrl + C
Чтобы остановить его с помощью кода (это работает для меня на Python 3):
import os os._exit(0)
вы также можете использовать:
import sys sys.exit()
exit()
raise SystemExit
Ответ 15
Нажмите Ctrl + Alt + Delete , и появится диспетчер задач.
Найдите команду Python, щелкните ее правой кнопкой мыши и выберите «Остановить» или «Убить».
Ответ 16
Программно вы можете использовать это:
while True: pass
Источник: utyatnishna.ru
Русские Блоги
Метод 1. Используйте sys.exit (0) для нормального завершения программы.Из рисунка видно, что работа оболочки не будет затронута после завершения программы.
Метод 2: используйте os._exit (0), чтобы закрыть всю оболочку. На рисунке вы можете видеть, что вся оболочка перезапускается после вызова sys._exit (0) (RESTART Shell).
Метод 3: Используйте сочетание клавиш Ctrl + C, чтобы принудительно прервать выполнение программы. Видно, что заказ завершается «KeyboardInterrupt» и не влияет на продолжение выполнения оболочки.
Метод 4: Самый простой и грубый способ завершить программу — щелкнуть «x» в правом верхнем углу оболочки, вся оболочка завершается, и программа окончательно завершается!
Источник: russianblogs.com
Python. Урок 24. Потоки и процессы в Python. Часть 3. Управление процессами
Продолжаем изучать параллельное программирование на Python. На этот раз разберемся с тем как создавать процессы, управлять завершением их работы и изучим особенности процессов-демонов.
- Процессы в Python
- Класс Process
- Создание и ожидание завершения работы процессов
- Создание классов-наследников от Process
- Принудительное завершение работы процессов
- Процессы-демоны
Процессы в Python
Процессы в Python позволяют запустить выполнение нескольких задач в параллельном режиме. По сути, при старте процесса запускает еще одна копия интерпретатора Python , в котором выполняется указанная функция. Таким образом, если мы запустим пять процессов, то будет запущено пять отдельных интерпретаторов, в этом случае уже не будет проблем с GIL . Такой способ позволяет параллельно запускать задачи активно использующие CPU . Они будут распределяться между несколькими процессами (ядрами), что значительно увеличит производительность вычислений.
Класс Process
Классом, который отвечает за создание и управление процессами является Process из пакета multiprocessing . Он совместим по сигнатурам методов и конструктора с threading . Thread , это сделано для более простого перехода от многопотокового приложения к многопроцессному. Помимо одноименных с Thread методов, класс Process дополнительно предоставляет ряд своих. Познакомимся поближе с этим классом, конструктор класса выглядит следующим образом:
class multiprocessing.Process(group=None, target=None, name=None, args=(), kwargs=<>, *, daemon=None)
- group
- Параметр всегда равен None , используется для обратной совместимости с Thread .
- Сallable -объект, который будет вызван методом run() при старте процесса.
- Имя процесса.
- Параметры объекта, переданного через target .
- Флаг, определяющий является ли данный процесс демоном ( True ) или нет ( False ). Если значение не задано, то оно будет равно свойству daemon родительского процесса.
Помимо методов и свойств, которые совпадают по назначению с аналогичными для класса Thread , класс Process имеет ряд уникальных:
- pid
- Возвращает ID процесса. Если процесс ещё не запущен, то вернет None .
- Код возврата. Если процесс ещё не завершил свою работу, то вернет None .
- Ключ аутентификации процесса. При инициализации multiprocessing, с главным процессом связывается специальная строка, которая генерируется с помощью os.urandom() . Это значение наследуют процессы-потомки, но его можно изменить, задав новое значение, через данное свойство.
- Числовой идентификатор, который может использоваться для синхронизации. Подробно об этом будет написано в одном из следующих уроков.
- Освобождает все ресурсы, связанные с процессом. Если процесс еще работает, то вызов метода приведет к выбросу исключения ValueError .
Создание и ожидание завершения работы процессов
Как уже было сказано выше, за организацию работы с процессами в Python отвечает класс Process . Для запуска процесса используется метод start() . Разберем простой пример:
from multiprocessing import Process def func(): print(«Hello from child Process») if __name__ == «__main__»: print(«Hello from main Process») proc = Process(target=func) proc.start()
В рамках данного примера мы написали функцию (строка 4), которая будет выполнена в отдельном процессе, в главном процессе мы создали переменную типа Process (строка 10) с указанием функции func , и запустили его (срока 11). В результате в консоли будут выведены два сообщения из родительского и дочернего процессов:
Hello from main Process Hello from child Process
За ожидание завершения работы процесса(ов) отвечает метод join , со следующей сигнатурой:
join([timeout])
При вывозе метода join() выполнение программы будет остановлено до тех пор пока соответствующий процесс не завершит работу. Параметр timeout отвечает за время ожидания завершения работы процесса, если указанное время прошло, а процесс еще не завершился, то ожидание будет прервано и выполнение программы продолжится дальше. В случае, если метод join() завершился по таймауту или в результате того, что процесс был завершен аварийно (терминирован), то он вернет None .
Если в приведенном выше примере код главного процесса заменить на следующий:
print(«Hello from main Process») proc = Process(target=func) proc.start() print(«Goodbye»)
То в консоли сообщения будут выведены в таком порядке:
Hello from main Process Goodbye Hello from child Process
Это происходит потому, что строка print(“Goodbye”) из основного процесса выполняется раньше, чем print(“Hello from child Process”) из дочернего. Для того, чтобы все было выведено в нужном порядке, воспользуемся методом join() :
print(«Hello from main Process») proc = Process(target=func) proc.start() proc.join() print(«Goodbye»)
Для проверки того выполняется процесс сейчас или нет используется метод is_alive() . Дополним наш пример соответствующими проверками:
print(«Hello from main Process») proc = Process(target=func) proc.start() print(f»Proc is_alive status: «) proc.join() print(«Goodbye») print(f»Proc is_alive status: «)
Hello from main Process Proc is_alive status: True Hello from child Process Goodbye Proc is_alive status: False
Создание классов-наследников от Process
В классе наследнике от Process необходимо переопределить метод run() для того, чтобы он (класс) соответствовал протоколу работы с процессами. Ниже представлен пример с реализацией этого подхода.
from multiprocessing import Process from time import sleep class CustomProcess(Process): def __init__(self, limit): Process.__init__(self) self._limit = limit def run(self): for i in range(self._limit): print(f»From CustomProcess: «) sleep(0.5) if __name__ == «__main__»: cpr = CustomProcess(3) cpr.start()