Как остановить работу программы Python?
Есть программа, которая должна работать до какого-то момента, если не остановить, то бесконечно. Хочу как-нибудь «красиво» останавливать программу, но не знаю как.
- Вопрос задан более трёх лет назад
- 26791 просмотр
Комментировать
Решения вопроса 2
Ответ написан более трёх лет назад
Комментировать
Нравится 7 Комментировать
yay ✌️ t.me/kshnkvn

Ответ написан более трёх лет назад
Нравится 5 4 комментария

Jairman @Jairman Автор вопроса
Круто, но не этого хотелось бы

Jairman, какой вопрос — такой и ответ.
В идеале — скрипт не нужно завершать, у него должно быть логическое завершение. Если есть необходимость останавливать скрипт вручную, то нужно смотреть на сам скрипт, потому что вариантов, как остановить выполнение — куча. Как вариант — обрабатывать исключение KeyboardInterrupt и по нажатию ctrl + c внутри самого скрипта останавливать процессы.
Ivan Yakushenko, вы слишком усложняете) для того что бы иметь статус — Куратор тега Python
вы все правильно говорите, что программа должна логический конец иметь, но судя по вопросу требуется именно тупое прерывание программы в тот момент где захочет ее создатель) программным методом, без пальцев)

artem_sib, ничего я не усложняю. Для реализации точки выхода из приложения, которая гарантирует завершение всех процессов, нужно смотреть на реализацию самого приложения. А под
Завершение программы в Python
Однако, там не было объяснения какой метод лучше. Какой метод является наиболее «безаварийным»? И заодно: есть ли в Python понятие Autocloseable объектов? Если я сделаю ранее завершение программы, нужно ли мне будет закрывать файлы и т.д.?
Отслеживать
7,722 13 13 золотых знаков 25 25 серебряных знаков 54 54 бронзовых знака
задан 17 окт 2015 в 16:11
1,337 4 4 золотых знака 17 17 серебряных знаков 34 34 бронзовых знака
17 окт 2015 в 16:23
Спасибо! Лучшим решением является использование sys.exit()
17 окт 2015 в 16:28
на счет второго: лучше закрывать/завершать все операции перед завершением программы
17 окт 2015 в 16:32
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Короткий ответ:
Лучше использовать sys.exit()
Механизм завершения процесса в Python реализован через бросание исключения SystemExit , таким образом можно просто создать подобное исключение и программа завершится:
raise SystemExit # или даже передать число -- код ошибки завершения программы raise SystemExit(1)
Функция exit и аналогичная ей quit созданы для удобства работы в интерактивном режиме и их не рекомендуется использовать внутри скриптов:
They are useful for the interactive interpreter shell and should not be used in programs.
По факту они также просто поднимают исключение, и при попытке вызова без скобок напишут подсказку о правильном способе выхода из интерпретатора:
>>> quit Use quit() or Ctrl-D (i.e. EOF) to exit >>> exit Use exit() or Ctrl-D (i.e. EOF) to exit
Использовать sys.exit стоит потому, что эта функция лежит в стандартном модуле и будет всегда там доступна. Также это довольно явный способ выразить своё желание завершить программу.
Есть также дополнительный метод для немедленного завершения программы: os._exit . У него довольно специфическая область применения, и там же есть замечание:
The standard way to exit is sys.exit(n)
Т.е. здесь даётся подтверждение того, что стандартный способ завершения программы — это вызов sys.exit .
Функция os.abort , упомянутая вами, использует механизм сигналов процессу. Конкретно при вызове этой функции будет передан сигнал SIGABRT , что в linux приведёт к завершению программы и созданию дампа памяти процесса. Подобное завершение рассматривается операционной системой как аварийное, поэтому не стоит использовать его для безаварийного завершения приложения.
По второй части вопроса. В Python есть развитая система контекстных менеджеров: классов, которые умеют работать с оператором with . Самое частое использование этого механизма встречается, вероятно, с файлами.
with open('filename') as my_file: print(my_file.read())
Этот код откроет файл, напечатает его содержимое на экран и закроет файл автоматически, даже если возникнет исключение при его печати.
Для классов, которые не приспособлены для работы с with есть функция closing в библиотеке contextlib . Из документации:
with closing(.open()) as f:
is equivalent to this:
f = .open() try: finally: f.close()
Вот небольшой пример работы этой функции:
import contextlib class Closeable: def close(self): print('closed') with contextlib.closing(Closeable()): pass # печатает closed
Теперь небольшое отступление о том, почему стоит использовать конструкцию with .
Известно, что программа завершится от любого необработанного исключения, а не только от SystemExit . Таким образом, если в вашем коде используются какие-то ресурсы, которые требуется правильным образом закрывать перед завершением работы, нужно оборачивать работу с ними в блоки try . finally . .
Однако, при использовании конструкции with это оборачивание происходит автоматически, и все ресурсы закрываются корректно.
Так как выход из программы — это всего лишь брошенное исключение, то и в случае использования функции sys.exit закрытие открытых в операторе with ресурсов произойдёт корректно:
with contextlib.closing(Closeable()): sys.exit() # напечатает closed
Вы можете писать также и свои классы, предоставляющие ресурсы или классы, оборачивающие другие, которые нужно уметь закрывать автоматически. Для этого используются методы __enter__ и __exit__ .
- Похожий вопрос с англоязычного StackOverflow
- Функции, добавляемые модулем site
- Документация по конструкции with
- Документация по функции closing
- Документация по исключению SystemExit
- Документация по функции os._exit
- Документация по функции sys.exit
- Документация по функции os.abort
- Описание системного сигнала SIGABRT
Как остановить программу в Python?
Чтобы остановить запущенную программу, используйте Ctrl +, C чтобы завершить процесс. Чтобы обработать это программно на Python, импортируйте sys модуль и используйте его sys. exit() там, где вы хотите завершить программу. Ctrl + Z должен сделать это, если вы застряли в оболочке python.
Как остановить программу в Idle?
- c#-остановить выполнение программы в случае ошибки .
- Ctrl+F6 (Перезапуск shell) .
- Я видел эту проблему с IDLE и matplotlib при использовании их на Windows. .
- При использовании plt.show() подпроцесс python входит в цикл событий GUI toolkit и блокируется до тех пор , пока цикл событий не завершится.
Как остановить программу в Pycharm?
Как только вы запустили режим отладки, нажмите кнопку, выделенную красным кружком — это позволит вам пройти через код, посмотреть на переменные, их назначения и получить какие-либо ошибки. Если вам нужно остановиться в любой момент, просто нажмите красную кнопку «Стоп» слева от окна отладки.
Как принудительно завершить программу Python?
- Версия Python 3.5.
- Вызов sys. exit() — стандартный способ завершения программы в Python. .
- Оператор break также может закрыть выполнение программы. Чаще он используется именно в цикле для выхода з него, выполнение программы продолжится далее по коду.
Как выйти из программы в Питоне?
Простой способ досрочного завершения скрипта Python — это использование встроенной quit() функции. Там нет необходимости импортировать любую библиотеку, и это эффективно и просто. также sys. exit () завершит все сценарии Python, но quit () завершит только сценарий, который его породил.
Как выйти из консоли питона?
CTRL + c -> Прервет большинство заданий. Если, однако, вы написали программу-оболочку python, которая в свою очередь вызывает другие программы python, Ctrl-c остановит только текущее задание.
Как прервать цикл в Python?
В Python оператор break позволяет прервать цикл при возникновении внешнего фактора. Оператор break нужно поместить сразу после оператора цикла (обычно после выражения if). В этой небольшой программе переменная number имеет значение 0. Далее идёт оператор for, который запускает цикл, если переменная number меньше 10.
Как остановить консоль Python?
- Просто объявите переменную типа k или m или любую другую, которую вы хотите, а теперь просто добавьте этот фрагмент кода в конце вашей программы k=input(«press close to exit») .
- Для Windows Сред: .
- Похоже, что вы запускаете что-то в Windows, дважды щелкнув по нему.
Ответ на вопрос: как остановить программу в python
Во время работы программы на Python иногда может возникнуть необходимость прервать исполнение программы до ее завершения. В этой статье мы рассмотрим несколько способов остановить программу в Python.
Использование команды sys.exit
Одним из способов остановить программу в Python является использование команды sys.exit из модуля sys . Эта команда прекращает выполнение программы и возвращает код завершения. Например:
import sys print("Программа выполняется") # остановить программу sys.exit print("Эта строка не будет выполнена")
В приведенном выше примере после выполнения команды sys.exit программа прекратит выполнение и строка print(«Эта строка не будет выполнена») не будет выполнена.
Использование исключений
Еще одним способом остановить программу в Python является вызов исключения. Можно использовать встроенные исключениятакие как SystemExit или создать свое собственное исключение. Например:
print("Программа выполняется") # остановить программу с помощью исключения raise SystemExit print("Эта строка не будет выполнена")
В приведенном выше примере после вызова исключения SystemExit программа прекратит выполнение и строка print(«Эта строка не будет выполнена») не будет выполнена.
Использование команды KeyboardInterrupt
Еще один способ остановить программу в Python ― это использование команды KeyboardInterrupt . Если пользователь нажмет комбинацию клавиш Ctrl+C во время выполнения программыто будет вызвано исключение KeyboardInterrupt . Например:
try: while True: print("Программа выполняется") except KeyboardInterrupt: print("Программа остановлена пользователем")
В приведенном выше примере, если пользователь нажмет комбинацию клавиш Ctrl+C , то выполнение программы будет прервано и будет выведено сообщение Программа остановлена пользователем .
В этой статье мы рассмотрели несколько способов остановить программу в Python. Вы можете выбрать подходящий способ в зависимости от требований вашей программы и ваших предпочтений.
Читать еще Ответ на вопрос: что такое break в python
Заключение

Привет! Я — Михаил Петров, и я ваш гид в мире Python. С Python я познакомился еще в студенческие годы, и с тех пор этот язык стал моей страстью и профессией. Свои первые шаги в программировании я делал с Python, и с тех пор я не перестаю восхищаться его гибкостью и мощью. Я имею более 10-летний опыт работы в сфере анализа данных и разработки на Python, и горжусь тем, что могу делиться своими знаниями и опытом с вами. В моем блоге, я делюсь практическими советами и техниками по использованию Python в анализе данных. Моя цель — сделать сложные вещи простыми и понятными для каждого. Если вы хотите научиться программировать на Python, использовать его для анализа данных или просто узнать, как сделать ваш бизнес более эффективным с помощью этого языка, то добро пожаловать в мой блог! Вместе мы создадим интересные проекты и достигнем новых высот в мире Python.
