Как приостановить выполнение программы в python
Перейти к содержимому

Как приостановить выполнение программы в python

Правильный способ приостановить программу Python

кажется мне прекрасным (или raw_input() в Python 2.Икс.) В качестве альтернативы вы можете использовать time.sleep() Если вы хотите сделать паузу на определенное количество секунд.

Я предполагаю, что вы хотите сделать паузу без ввода

Итак, я обнаружил, что это очень хорошо работает в моих начинаниях кодирования. Я просто создана функция в самом начале моей программы,

и теперь я могу использовать pause() функция всякий раз, когда мне нужно так же, как если бы я писал пакетный файл. , в такой программе, как эта:

теперь очевидно, что эта программа не имеет цели и просто для примера целей, но вы можете понять, что именно я означать.

примечание: для Python 3 вам нужно будет использовать input В противоположность raw_input

Я использую следующее Для python 2 и 3, чтобы приостановить выполнение кода, пока пользователь не нажмет ENTER

у меня был аналогичный вопрос, и я использовал сигнал:

таким образом, Вы регистрируете обработчик сигнала SIGINT и приостанавливаете ожидание любого сигнала. Теперь вне вашей программы (например, в bash) вы можете запустить kill -2 <python_pid> , который отправит сигнал 2 (т. е. SIGINT) в вашу программу python. Ваша программа вызовет зарегистрированный обработчик и продолжит работу.

Как указал mhawke и stevehaкомментарии, лучший ответ на этот точный вопрос будет:

для длинного блока текста лучше всего использовать input(‘Press <ENTER> to continue’) (или raw_input(‘Press <ENTER> to continue’) на Python 2.x) запрашивать пользователя, а не время задержки. Быстрые читатели не хочу ждать задержки, медленные читатели могут захотеть больше времени задержка, кто-то может быть прерван во время чтения и хочет намного больше времени и т. д. Кроме того, если кто-то использует программу много, он/она возможно, привыкли, как это работает и не нужно даже читать долго текст. Это просто дружелюбнее, чтобы позволить пользователю контролировать, как долго блок текст отображается для чтения.

Функция wait() модуля asyncio в Python.

Приостановка выполнение задач по таймауту или условию.

Синтаксис:
Параметры:
  • aws — множествообъектов ожидания,
  • loop=None — параметры цикла,
  • timeout=None — максимальным количеством секунд ожидания,
  • return_when=ALL_COMPLETED — когда функция должна возвратить результат.
Возвращаемое значение:
    из двух множеств Task / Future в виде (done, pending) .
Описание поведения asyncio.wait :

Функция wait() модуля asyncio одновременно запускает awaitable-объекты (преимущественно задачи Task ) из переданного множества aws и производит блокировку выполнения программы до выполнения условия, указанного в аргументе return_when .

Возвращает кортеж из двух множеств Task / Future в виде (done, pending) .

Аргумент timeout ( float или int ) в секундах, если он указан, можно использовать для управления временем ожидания результатов задач, из множества aws , прежде чем приостановить не выполненные задачи.

Обратите внимание, что функция asyncio.wait() не вызывает исключение asyncio.TimeoutError . Задачи, которые не успели выполнится по истечении timeout , приостанавливают свое выполнение и возвращаются во втором множестве pending . В последствии, можно возобновить выполнение приостановленных задач.

Аргумент return_when указывает, когда функция asyncio.wait() должна возвратить результат. Это должна быть одна из следующих констант:

В отличие от функции asyncio.wait_for() , asyncio.wait() не отменяет, а приостанавливает задачи при наступлении таймаута.

Устарело с Python 3.8: Прямая передача сопрограмм в функцию asyncio.wait() не рекомендуется, так как это приводит к запутанному поведению. Если какой-либо объект, ожидающий результатов в *aws является сопрограммой, то он автоматически назначается как задача Task .

Устарело с Python 3.8: параметр цикла loop устарел и будет удален в Python 3.10

Как остановить сценарий Python (клавиатура и программно)

https://youtu.be/98nlj9dpx7e Зачем остановить сценарий Python? В качестве языка программирования Python предназначен для чтения строки кода по линии и остановится в конце сценария по умолчанию – так почему нам нужно было остановить его? Хотя есть ряд причин, по которым это может потребоваться, они в основном попадают в две отдельные категории: … Как остановить сценарий Python (клавиатура и программно) Подробнее “

  • Автор записи

Зачем остановить сценарий Python?

В качестве языка программирования Python предназначен для чтения строки кода по линии и остановится в конце сценария по умолчанию – так почему нам нужно было остановить его?

Пока есть ряд причин, по которым это может потребоваться, они в основном падают на две отдельные категории:

  1. Вы сделали ошибку с вашим кодом, например, программа продолжает работать в бесконечном или, по крайней мере, очень длинный, цикл (любой, кто использовал Python, возможно, может относиться к этому!)
  2. Сам код правильный, но вы хотите остановить свой скрипт, если определенные условия либо имеют или не были выполнены.

Вариант 2 можно запланировать, включая механизм остановки в нашем коде, I.E. Программно. Для варианта 1 мы должны понять, как произвольно остановить наш код, когда программа работает, и мы сделаем это, используя нашу клавиатуру. Давайте посмотрим на эти два варианта более подробно.

Клавиатура останавливается

Точный механизм для остановки клавиатуры действительно будет зависеть от вашей операционной системы, для целей этой статьи мы будем использовать машину Windows 10, поэтому весь синтаксис будет относиться к этой среде.

Начать с того, что давайте собрали небольшой сценарий, который даст нам проблему, которую мы стремимся решить, и называть это Test.py и сохранить его в рабочем каталоге C: \ Пользователи \ Rikesh :

Если мы сейчас запустим вышеупомянутый скрипт через наш переводчик Python, он будет просто продолжать печатать номера последовательно на неопределенный срок. Мы не привели к нему никаких условий, чтобы остановиться.

Прерывание клавиатуры

Одним из наиболее распространенных методов остановки скрипта является использованием следующего сочетания клавиш, который известен как KeyboardInterRupt:

Когда мы используем это, мы получаем ответ от нашего переводчика Python, говоря нам, что программа была остановлена с помощью этого ярлыка.

2.2 Ctrl + пауза/перерыв

Хотя вышеизложенное работает хорошо с нашим простым примером кода, есть времена, когда это может быть не так. Например, наш скрипт мог бы явно остановить это от работы, специально исключая клавиатуру I.E, кроме KeyboardInterTrupt, или он может даже быть исключен с нормальным, кроме синтаксиса. Например:

Влияние кроме:, в этом примере состоит в том, чтобы отрицать нашу клавиатуру врачуса – будь умышленно или нет. Так что теперь, когда мы запускаем вышеупомянутый скрипт через нашу командную строку Windows, наш сочетаний Ctrl + C неэффективна, а цифры продолжают печатать.

В этом случае мы можем использовать Ctrl + Pause/Break, которая является гораздо более мощным способом остановки нашего сценария.

Не только это останавливает сценарий, но как это не KeyboardInterrupt Ярлык Мы не получаем то же сообщение от нашего переводчика. Мы просто возвращаемся в командную строку.

Программные остановки

Таким образом, мы видели, как использовать нашу клавиатуру, чтобы остановить наши скрипты, теперь давайте посмотрим, как мы можем использовать наш код, чтобы остановить скрипты. Это, очевидно, потребует от нас понимать наш код и предварительно определить, где будет необходима любые остановки.

Программно в процессе развития

При запуске Python модуль сайта автоматически загружен автоматически, и это по умолчанию поставляется с объектами QUIT () и EXIT (). Эти два объекта работают так же, как следует, и, поскольку их имена предлагают можно использовать для остановки наших скриптов:

В обоих случаях, если мы запустим код выше из нашего интерпретатора, программа автоматически остановится и выйдет/выходит, как только X попадет до 5.

Однако, пожалуйста, обратите внимание как Quit () и Выход () предназначены только для использования в интерпретатере Python, где был загружен модуль сайта. Никто из них не считается подходящим для использования в производственном коде, то есть в реальной ситуации, поскольку мы не контролируем, как и если модуль сайта загружен. По этой причине оба из этих вариантов следует использовать только в целях развития и в переводчике Python.

Программно в производственном коде

Так что теперь давайте посмотрим на то, как мы можем остановить наши сценарии бегать в производственном коде. Чтобы уточнить, этим мы имеем в виду код, который готов к отправке клиенту/конечным пользователю. Он был отлажен и хорошо структурирован и хорошо документирован.

Использование sys.exit ()

Это самый распространенный способ остановки наших сценариев программно, и это делает это, бросая/повышая исключение системы. Если исключение не поймано, что переводчик Python закрыт, и программа останавливается. Как нам нужно явно импортировать модуль SYS, мы производим SYS часть нашего сценария, эффективно гарантируя, что он всегда будет там, когда код работает. Это делает этот метод идеальным для использования в нашем производственном коде:

Теперь, запустив скрипт, мы получаем следующий вывод:

Хотя конечный результат такой же, как и раньше, с Quit () и Выход () Этот метод считается хорошей практикой и хорошим кодированием. Поскольку мы импортировали модуль SYS в нашему сценарию, он всегда будет доступен, когда сценарий работает ..

Поднять системуExit.

Это интересно, потому что он делает все, что sys.exit () Есть ли, похоже, не используется или не считается наилучшей практикой. Это имеет преимущество, что не требует никакого импорта и всех sys.exit () Операция делает, как мы видели в предыдущем разделе, это поднять SystemExit Исключение в любом случае. Поэтому есть аргумент, что, используя этот метод, мы делаем наш очиститель кода и более эффективным:

И когда мы запускаем код, вывод выглядит следующим образом:

Использование OS._EXIT ()

Последний метод мы рассмотрим OS._EXIT () который является частью Python ОС Модуль, обеспечивающий функции для взаимодействия непосредственно с операционной системой. Этот метод в основном призывает к немедленному прекращению программы, а не повысить исключение, так что, возможно, самый экстремальный из всех, как мы видели.

Поэтому практическое использование ограничено очень конкретными случаями, поэтому для целей настоящей статьи мы сосредоточимся на том, как его использовать, а не почему и когда. Во-первых, мы должны импортировать ОС Модуль для него для работы, и в отличие от других методов, которые мы видели, мы не можем пройти пустой параметр. Это означает, что нам нужно указать состояние выхода, которое обычно является целочисленным значением, причем 0 – обычный выход. Если предположить, что это так, как наш код будет выглядеть так:

И когда мы запускаем код, вывод выглядит следующим образом:

Резюме

Мы видели ряд методов прекращения ваших сценариев Python, которые не должны приходить как сюрприз для всех, кто знаком с Python. Пока все они предоставляют один и тот же конечный результат, у них есть разные приложения, особенно между использованием клавиатуры или просто находятся в программном порядке с вашим кодом.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *