Правильный способ приостановить программу Python
Я начинающий в этом, но в соответствии с docs.python.org/2/library/functions.html#input , input(prompt) эквивалентен eval(raw_input(prompt)) . Это, вероятно, не то, что вы хотите.
user100464 19 июнь 2013, в 14:47
@user100464: user100464: Если это Python 3, то все в порядке; input в Py3 такой же, как и в Py2 raw_input . Если это Py3, то у них все в порядке, хотя нет необходимости присваивать возвращаемое значение, если оно никогда не используется.
ShadowRanger 09 июнь 2017, в 01:28
Показать ещё 1 комментарий
Поделиться:
8 ответов
Лучший ответ
Кажется, мне хорошо (или raw_input() в Python 2.X). В качестве альтернативы вы можете использовать time.sleep() , если вы хотите сделать паузу в течение определенного количества секунд.
import time print("something") time.sleep(5.5) # pause 5.5 seconds print("something")
mhawke 19 июль 2012, в 00:47
Поделиться
Я знаю о функции сна в модуле времени, но что, если у меня есть длинный блок текста, который я хочу, чтобы пользователь прочитал?
RandomPhobia 19 июль 2012, в 00:34
Просто используйте print для отображения длинного блока текста, а затем input() или raw_input(‘Press
mhawke 19 июль 2012, в 00:39
Для длинного блока текста лучше использовать input() (или raw_input() в Python 2.x), чтобы raw_input() у пользователя, а не задержку. Быстрые читатели не захотят ждать задержки, медленные читатели могут захотеть больше времени на задержку, кто-то может быть прерван во время чтения, и может потребоваться намного больше времени и т. Д. Кроме того, если кто-то часто использует программу, он / она она может привыкнуть к тому, как это работает, и ей даже не нужно читать длинный текст. Просто удобнее позволить пользователю контролировать, как долго блок текста отображается для чтения.
steveha 19 июль 2012, в 02:00
Показать ещё 1 комментарий
import os os.system("pause")
Chan Tzish 02 окт. 2015, в 15:03
Поделиться
Это зависит от Windows, в то время как все существующие ответы не зависят от платформы.
lvc 02 окт. 2015, в 14:26
Я предполагаю, что вы хотите приостановить без ввода
8bitwide 19 июль 2012, в 00:56
Поделиться
Итак, я нашел, что это очень хорошо работает в моих программах кодирования. Я просто создал функцию в самом начале моей программы,
def pause(): programPause = raw_input("Press the key to continue. ")
и теперь я могу использовать функцию pause() всякий раз, когда мне нужно, чтобы я писал пакетный файл. Например, в такой программе, как:
import os import system def pause(): programPause = raw_input("Press the key to continue. ") print("Think about what you ate for dinner last night. ") pause()
Теперь очевидно, что эта программа не имеет цели и предназначена, например, для целей, но вы можете точно понять, что я имею в виду.
ПРИМЕЧАНИЕ. Для Python 3 вам нужно использовать input , а не raw_input
Cether 17 янв. 2016, в 20:43
Поделиться
Как указано mhawke и steveha, лучший ответ на этот точный вопрос будет:
Для длинного блока текста лучше использовать input(‘Press to continue’) (или raw_input(‘Press to continue’) on Python 2.x), чтобы запрашивать пользователя, а не задержку времени. Быстрый читатель не захотят ждать задержки, медленным читателям может потребоваться больше времени на задержка, кто-то может быть прерван во время чтения и много больше времени и т.д. Кроме того, если кто-то много использует программу, он/она может привыкнуть к тому, как это работает, и не нужно даже читать длинные текст. Это просто более удобно, чтобы позволить пользователю контролировать, как долго блок текста отображается для чтения.
ntg 04 авг. 2015, в 09:15
Поделиться
raw_input("Press Enter to continue . ") exit()
shb2789 09 июнь 2017, в 02:39
Поделиться
Я немного использовал этот метод, однако мне также нравится использовать его как функцию pause (), и я не думаю, что есть необходимость в exit (). def pause (): вернуть raw_input («Нажмите Enter, чтобы продолжить . »)
jacktrader 12 фев. 2018, в 18:51
Определенно, как этот 🙂 Спасибо shb2789
tcratius 14 сен. 2018, в 03:07
У меня был аналогичный вопрос, и я использовал сигнал:
import signal def signal_handler(signal_number, frame): print "Proceed . " signal.signal(signal.SIGINT, signal_handler) signal.pause()
Итак, вы регистрируете обработчик сигнала SIGINT и приостанавливаете ожидание любого сигнала. Теперь из-за пределов вашей программы (например, в bash) вы можете запустить kill -2 , который отправит сигнал 2 (т.е. SIGINT) в вашу программу python. Ваша программа вызовет ваш зарегистрированный обработчик и продолжит работу.
olean 07 окт. 2015, в 15:10
Поделиться
Обратите внимание, что это не переносимо между платформами, например. на винде нету signal.pause . signal.pause .
kyrill 28 апр. 2019, в 15:40
Я думаю, что лучший способ остановить выполнение — это функция time.sleep(). если вам нужно приостановить выполнение только в определенных случаях, вы можете просто реализовать оператор if, например:
if somethinghappen: time.sleep(seconds)
вы можете оставить пустую ветку else.
Как выйти из программы в Python 3




Как выйти из программы в Python 3 при помощи разных самых простых команд, методов, функций, операторов. Как корректно завершить работу программы и избежать различных ошибок?
Версия Python 3.5
Стандартный способ завершения программы в Python
Для этого варианта первую строчку ниже нужно прописать в самом начале файла, так как любой импорт пакетов или модулей производится только в самом начале файла. А уже в нужном месте кода для остановки и выхода из программы следует прописать вторую строчку кода. Если поискать, в интернете можно найти информацию, что данный вариант является самым оптимальным. Также программисты пишут, что данная функция лежит в стандартном модуле и поэтому всегда доступна.
Вызов sys.exit() — стандартный способ завершения программы в Python. Но это не так, если не подключить модуль, она не сработает.
import sys sys.exit()
Функция exit() для выхода из программы в Python 3
А вот функция exit() поможет не просто прервать выполнения цикла, но и полностью останавливает программу, код далее не читается. В переводе с английского exit — выход. Кстати, подключать для вызова и корректной работы данной функции в Python 3.5 никакой модуль не нужно — она прекрасно работает и так.
Также была найдена информация, что exit() является помощником для интерактивной оболочки (консоли), тем временем как sys.exit предназначен для использования в программах.
exit()
Кстати, функция quit() также работает для закрытия программы на Python и не требует для своей работы подключения каких-либо модулей.
quit()
Оператор break также может закрыть выполнение программы. Чаще он используется именно в цикле для выхода з него, выполнение программы продолжится далее по коду. В переводе с английского break — перерыв.
Использование выражений Break, Continue и Pass при работе с циклами в Python 3

Использование циклов for и циклов while в Python помогает эффективно автоматизировать и воспроизводить задачи.
Однако иногда на работу вашей программы может влиять внешний фактор. Когда это произойдет, вы можете захотеть, чтобы ваша программа полностью вышла из цикла, пропустила часть цикла и продолжила его выполнение или игнорировала этот внешний фактор. Для этих действий используются выражения break , continue и pass .
Выражение Break
В Python выражение break дает вам возможность выйти из цикла при активации внешнего условия. Выражение break помещается в блок кода внутри выражения loop, обычно после условного выражения if .
Рассмотрим пример использования выражения break в цикле for :
number = 0 for number in range(10): if number == 5: break # break here print('Number is ' + str(number)) print('Out of loop')
В этой небольшой программе переменная number инициализируется как 0. Затем выражение for строит цикл, пока значение переменной number составляет меньше 10.
В цикле for имеется выражение if , которое задает условие, что если значение переменной number равно целому числу 5, то цикл прекращается.
В цикле также содержится выражение print() , которое выполняется с каждой итерацией цикла for , пока цикл не прекращается, поскольку оно располагается после выражения break .
Чтобы узнавать о выходе из цикла, мы добавили завершающее выражение print() вне цикла for .
При выполнении этого кода результат будет выглядеть следующим образом:
OutputNumber is 0 Number is 1 Number is 2 Number is 3 Number is 4 Out of loop
Это показывает, что когда переменная number оценивается как эквивалентная целому числу 5, цикл прекращается, поскольку программа получает соответствующее указание через выражение break .
Выражение break заставляет программу выйти из цикла.
Выражение Continue
Выражение continue дает возможность пропустить часть цикла, где активируется внешнее условие, но при этом выполнить остальную часть цикла. При этом прерывается текущая итерация цикла, но программа возвращается к началу цикла.
Выражение continue размещается в блоке кода под выражением цикла, обычно после условного выражения if .
Мы используем ту же программу с циклом for , что и в разделе «Выражение Break» выше, но при этом используем выражение continue вместо выражения break :
number = 0 for number in range(10): if number == 5: continue # continue here print('Number is ' + str(number)) print('Out of loop')
Отличие выражения continue от выражения break заключается в том, что код продолжит выполняться несмотря на прерывание, если значение переменной number будет оценено как равное 5. Давайте посмотрим на результаты:
OutputNumber is 0 Number is 1 Number is 2 Number is 3 Number is 4 Number is 6 Number is 7 Number is 8 Number is 9 Out of loop
В этом выводе условие Number is 5 никогда не выполняется, но цикл продолжается после этого, чтобы выводить линии для чисел 6–10 до выхода из цикла.
Вы можете использовать выражение continue , чтобы избежать использования глубоко вложенного условного кода или чтобы оптимизировать цикл, устранив часто встречающиеся случаи, которые вы хотите отклонять.
Выражение continue заставляет программу пропустить определенную часть цикла, а затем продолжить выполнение оставшейся части цикла.
Выражение Pass
При активации внешнего условия выражение pass позволяет обрабатывать условия без влияния на цикл; чтение кода будет продолжаться до появления выражения break или другого выражения.
Как и в случае с другими выражениями, выражение pass будет содержаться в блоке кода до выражения loop, обычно после условного выражения if .
Используя тот же код выше, попробуйте заменить выражение break или continue выражением pass :
number = 0 for number in range(10): if number == 5: pass # pass here print('Number is ' + str(number)) print('Out of loop')
Выражение pass , появляющееся после условного выражения if , указывает программе на необходимость продолжить выполнение цикла и игнорировать тот факт, что переменная number оценивается как равная 5 во время одной из итераций.
Мы запустим программу и оценим вывод:
OutputNumber is 0 Number is 1 Number is 2 Number is 3 Number is 4 Number is 5 Number is 6 Number is 7 Number is 8 Number is 9 Out of loop
Используя выражение pass в этой программе, мы видим, что программа работает точно так же, как если бы в ней не было условного выражения. Выражение pass предписывает программе игнорировать это условие и продолжать обычное выполнение программы.
Выражение pass может создавать минимальные классы или выступать в качестве замещающего элемента при работе с новым кодом и действовать на уровне алгоритмов, прежде чем отрабатывать детали.
Заключение
Выражения break , continue и pass в Python позволяют использовать циклы for и while в вашем коде более эффективно.
Чтобы больше поработать с выражениями break и pass , вы можете выполнить учебный модуль нашего проекта «Создание бота Twitterbot с помощью Python 3 и библиотеки Tweepy».
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
Приостановить выполнение программы
Всем привет! Необходимо приостановить выполнение скрипта на n секунд. Первое что нагуглил time.sleep(n). Это годный вариант?
gadzira ★
15.04.16 10:30:12 MSK

Годный. А что тебя смущает? Ты проверил? Работает?
panter_dsd ★★★★
( 15.04.16 10:31:46 MSK )

outsider ★★
( 15.04.16 10:34:40 MSK )

kill -SIGSTOP script_pid;sleep 1m;kill -SIGCONT script_pid
zolden ★★★★★
( 15.04.16 10:47:03 MSK )
Ответ на: комментарий от panter_dsd 15.04.16 10:31:46 MSK
Таки да, все норм, но может есть какие-то best practices
gadzira ★
( 15.04.16 10:54:01 MSK ) автор топика
Ответ на: комментарий от gadzira 15.04.16 10:54:01 MSK

Ну если у тебя во время слипа планируется еще что-то делать то это не прокатит, нужно делать многопоточно, весь скрипт же тормознется. А так почему нет?!
alozovskoy ★★★★★
( 15.04.16 11:12:33 MSK )
Ответ на: комментарий от alozovskoy 15.04.16 11:12:33 MSK
У педона же гил, он всегда тормозится.
xpahos ★★★★★
( 16.04.16 06:04:28 MSK )
Ответ на: комментарий от xpahos 16.04.16 06:04:28 MSK

Я про полную остановку приложения пока определенный sleep не закончится. Не думаю что в случае ТСа накладные расходы на переключение смогут сыграть большую роль.
alozovskoy ★★★★★
( 16.04.16 07:22:23 MSK )
Ответ на: комментарий от xpahos 16.04.16 06:04:28 MSK

Подрастешь — тоже будешь на питончике пописывать 😉
