Как сделать задержку, которая не стопит программу?
Вопрос. Как сделать, чтобы функция wait работала как бы в отдельном потоке и не стопила цикл while?
- Вопрос задан более двух лет назад
- 288 просмотров
Комментировать
Решения вопроса 1
Сергей Горностаев @sergey-gornostaev Куратор тега Python
Седой и строгий
Запускать её в отдельном потоке.
Ответ написан более двух лет назад
Нравится 1 3 комментария
daho005 @daho005 Автор вопроса
гениально. Можете скинуть код, как это сделать, если не сложно?

daho005, а че документации по питону удалили из интернета недавно? гугли «многопоточность python» и тд
Сергей Горностаев @sergey-gornostaev Куратор тега Python
import time import threading def wait(): time.sleep(5) print(2) threading.Thread(target=wait).start() while True: print(1)
Тайминг в Python
Python – язык программирования, который можно отнести к общему назначению. С его помощью пишут как бизнес-софт, так и развлекательный (игровой) контент. Это отличное решение для новичков в разработке. Относится к объектно-ориентированному типу.
В данной статье будет рассказано о том, что собой представляет задержка в Python, как использовать time (таймер), для чего все это нужно. Информация пригодится даже опытным разработчикам, которые планируют работу со временем в будущей утилите.
Ключевые термины
Пытаясь освоить Python, программеру потребуется выучить немало теории. Вот базовые термины, без которых время и остальные компоненты кодификаций применять на деле не получится:
- Ключевое слово – зарезервированное системой слово или фраза. Обозначает действие, операцию, функцию. Ключевики не могут выступать в виде имен переменных.
- Переменная – именованная ячейка памяти, которую можно изменять, сохранять и считывать.
- Алгоритм – последовательность действий, набор правил, помогающих решать те или иные задачи.
- Класс – набор связанных между собой объектов, которые имеют общие свойства.
- Объект – комбинация переменных, констант и иных структурных единиц. Они выбираются совместно и аналогичным образом проходят обработку.
- Константа – значение, которое не будет меняться на протяжении всего выполнения утилиты.
- Тип данных – классификация информации определенного вида.
- Массив – множество данных. Они предварительно группируются.
Огромную роль в Python играют ключевые слова. Их необходимо либо запоминать, либо заучивать, либо держать где-то поблизости справочник с соответствующими данными. Иначе при объявлении переменных не исключены проблемы.
Задержка – это…
Задержка – термин, который применим ко времени. Он встречается и в обыденной жизни. Это – ситуация, когда что-то происходит или должно осуществиться не сразу. Пример – после наступления каких-то обстоятельств.
В программировании задержка «откладывает» выполнение кода на определенное время. Часто такая потребность возникает тогда, когда нужно дождаться завершения иного процесса, чтобы задействовать далее полученный результат.
При рассмотрении многопоточных утилит, использовать таймер (timer) и время (time) нужно, чтобы дождаться завершения операции и функций из других потоков.
Класс Timer
Класс Timer () в Python отвечает за время и работу с ним «от начала по конца». Модуль, метод, используемый для задержки и всего, что с ней связано. Перед использованием оного требуется произвести импорт компонента.
Для этого подойдет запись типа import time в Python. Класс относится к модулю threading. Он создает таймер, который запускает функцию с аргументами и ключевыми значениями (kwargs). Происходит это за счет time, установленного как interval. Этот параметр указывается в секундах.
Программеру предстоит запомнить следующее:

- Запись функции с классом, отвечающего за таймаут (timeout) –
- Если args равен None (этот показатель устанавливается изначально), Python использует пустой список.
- Когда ключевое слово kwargs равен None, применяется пустой словарь.
- Класс «Таймер» представлен действием, которое нужно запускать только по прошествии конкретного промежутка времени.
- Таймер выступает в виде подкласса threading.Thread().
Все это требуется запомнить. А еще – учесть, что в процессе коддинга предстоит использовать суперкласс (super class), а также мета данные.
Функции
Рассматривая methods time, программисту требуется изучить разнообразные функции, связанные со временем. Это поможет лучше разобраться в потоках и задержках. Не стоит забывать, что при тестинге важно использовать print. Эта операция выводит результат на экран.
Time.Time
Функция Time() будет возвращать число секунд, которые прошли с начала эпохи. Для Unix-систем это – 1.01.1970. Отсчет с 12 часов ночи ровно.

Ctime()
Компонент, который будет в виде аргумента в Python принимать количество секунд, прошедших с самого начала эпохи. Результат – возврат строки по местному time.
Sleep
Отвечает за непосредственную задержку. Откладывает исполнение нынешнего потока на заданное количество секунд.

Класс struct_time
Изучая, какой метод подойдет для работы с таймерами и super class, стоит обратить внимание на struct_time. Этот объект может быть принят некоторыми функциями в упомянутом ранее модуле. При обработке оного происходит возврат.

Выше – наглядный пример.
Реализация Sleep
Когда нужный метод для работы с задержкой изучен, можно рассмотреть то, как сделать таймаут. Для этого используют super class, а также sleep. Он проходит реализацию несколькими способами:
- Через time.sleep(). Это – встроенная возможность Python. Отвечает за таймаут через модуль time. Откладывает выполнение потока на установленное количество секунд.

- Вызов с декораторами. Активируют, когда одно неудачно выполненное действие требуется запустить снова.

- В потоках. Такие ситуации требуют, чтобы приложение избегало простоя. Для этого применяют или time.sleep(), или Event.wait() из модуля threading.
- Из Async IO. Асинхронные возможности появились в Питоне, начиная с 3.4 версии. Это – тип параллельного программирования.

- В Tkinter и wxPython. Отсрочки возможны при создании пользовательских интерфейсов. При применении sleep() внутри GUI кода блокируется цикл обработки событий.
- After(). Это – метод, который погружает в сон для Tkinter. Часть стандартной библиотеки.

- CallLater. Метод для wxPython. Имеет больше виджетов и хорошо годится для нативной разработки.

А вот видео, где можно наглядно увидеть работу с таймером в Python. Лучше разобраться с этой темой, как и с языком программирования, помогут дистанционные компьютерные курсы. Программы рассчитаны на срок до года. В конце будет выдан электронный сертификат. В процессе пользователи получат не только хорошо поданный учебный материал, но и новые полезные связи. А еще – соберут портфолио для трудоустройства.
Python. Как сделать задержку, не заморозив программу?
При использовании time.sleep(x), вся программа останавливается. Я же делаю бота, в котором после каждого действия нужно ждать. Ты же не можешь работать весь день без остановки? Нет, не можешь. После каждой работы нужно будет отдохнуть 1 реальный час. Но time.sleep(x) останавливает ВСЮ программу, и после каждой работы никто не может пользоватся ботом. Как сделать задержку, без заморозки программы?
Отслеживать
задан 23 сен 2020 в 14:04
TheNick — Ник TheNick — Ник
158 1 1 серебряный знак 17 17 бронзовых знаков
Запоминать время последнего запроса от каждого пользователя и проверять его, например.
23 сен 2020 в 14:13
Объясни понятнее. Если бот должен не работать, а его-то ждать, то какая разница, могут им пользоваться или нет, если пользоваться им все равно нельзя. Ведь нужно отдохнуть реальный час.
23 сен 2020 в 14:14
Надо же, первый раз вижу такую трогательную заботу о том, чтобы бот не переутомился.
23 сен 2020 в 14:21
@strawdog к сожалению, это не для бота 🙁 Мой бот игровой, так сказать «симулятор жизни», и чтобы человек не злоупотреблял и не спамил командой чтобы получить много денег, надо сделать отдых
23 сен 2020 в 14:26
По идее у Вас для каждой команды есть обработчик. В нем можно получить время запроса и при повторе команды вычитать его из текущего. Если итог меньше часа то программа должна дать отказ.
Вопросы с меткой [sleep]
Руководство по использованию метки sleep отсутствует.
62 вопроса
Конкурсные
Неотвеченные
- Конкурсные 0
- Неотвеченные
- Цитируемые
- Рейтинг
- Неотвеченные (мои метки)
16k показов
Использование метода sleep()
Всем добрый день. Нужен совет: программа должна менять надпись на кнопке последовательно от «10» до «0». Чтобы каждая смена надписи происходила с небольшим интервалом я использовал метод sleep(). В .
задан 26 июл 2014 в 12:47
142 показа
Java делает паузу на неточное количество миллисекунд
Есть некое ПО, в котором генерируются события. ПО предоставляет две функции: GetEvents и GetData. Сценарий такой: сначала выполняется GetEvents, проходит какое-то время, после выполняется GetData, .
задан 1 июл 2017 в 15:29
3k показов
Остановка выполнения цикла while
Всем привет! Интересует вопрос — как можно правильно остановить выполнение while цикла со sleep внутри. Дело в том, что я реализовываю «long poll» для быстрого обновления информации на сайте (.
задан 22 мая 2013 в 10:33
5k показов
Метод System.Threading.Thread.Sleep делает задержку ровно на указанное время?
Функция Sleep делает задержку ровно на указанное время? Или микросекунду с лишнем от реального времени? Каким образом работает задержка времени, это реальное время или такт работы процессора? У .
задан 10 июл 2017 в 10:27
277 показов
Эффективна ли функция sleep()?
Добрый день, хотим запустить скрипт, который рандомом на протяжении всего дня будет запускать различные функции. Выполнение будет назначаться рандомно по времени от 0 до 24 часов в ожидании. т.е. .
задан 1 авг 2017 в 10:23
475 показов
Приостановить приложение на несколько секунд — Java
Здравствуйте. В приложении после нажатии на кнопку — кнопки должны пропадать, а приложение останавливаться на 5 сек. Так вот, у меня почему-то при нажатии кнопки не убираются, а сразу идёт в сон .
задан 3 июн 2017 в 6:31
1k показов
Вызов второго activity через некоторое время
Необходимо 1. Открыть первое активити. 2. Подождать 3 секунды. 3. Открыть второе активити. Какой из вариантов лучше? Через Runnable или через sleep? Первый вариант Runnable r = new .
задан 22 июн 2017 в 3:35
2k показов
Работа скрипта python в спящем режиме компьютера
Возможно ли продолжать исполнение python скрипта при спящем режиме компьютера? И как это сделать? P.S. Если что, это нужно для бота ВК на личное пользование P.P.S. pythonanywhere мне не подходит, т.к. .
задан 1 июл 2020 в 13:07
2k показов
Как сделать таймер на C++
Делаю игру змейку, изучая ООП C++, и есть код: while (true) < snake.Move(); sleep(150); // задержка в 150 миллисекунд >Как сделать эту самую функцию «sleep()» ? ОС — Linux
задан 3 окт 2017 в 17:49
142 показа
С# Как узнать поддерживается ли гибернация?
Мое приложение должно переводить компьютер в спящий режим или в режим гибернации (на выбор пользователя). Проблема заключается в том, что я хочу при запуске приложения проверить, поддерживается ли в .
задан 10 июн 2019 в 20:54
822 показа
Python запуск / остановка функции
есть цикл, как сделать чтобы можно было его запустить и остановить вводом /start и /stop тот же input() замораживает скрипт заранее спасибо upd. допустим у меня есть функция def foo(text): .
задан 19 авг 2019 в 20:01
249 показов
функция sleep в PHP
функция sleep в PHP на вертуальном сервере не работает как нужно , ( в PHP онлайн тесте, работает нормально) задача сделать интервал на кaждое предложение в 3 секунды ( echo ‘
Rong .
задан 27 окт 2018 в 16:07
277 показов
Как заморозить нить (Thread) извне?
Если мы создаем нить, то можем заморозить ее на время в методе run, но каким образом мы можем остановить ее на время извне? public static void main(String[] args) throws InterruptedException < .
задан 20 мая 2017 в 12:28
97 показов
Установка минимального времени показа окна загрузки в андроид
Подскажите, как сделать задержку, чтобы вместе с вызовом функции Load() она была не меньше определенного времени. Обычный sleep() тут не подойдет. По идее, мне нужна функция, возвращающая текущее .
задан 19 мая 2015 в 16:38
2k показов
Python. Как сделать задержку, не заморозив программу?
При использовании time.sleep(x), вся программа останавливается. Я же делаю бота, в котором после каждого действия нужно ждать. Ты же не можешь работать весь день без остановки? Нет, не можешь. После .