Пропустить до содержимого

Как использовать паузу в Python?

[

Как добавить задержку времени в ваш код с помощью функции sleep() в Python

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

Например, вы можете использовать вызов функции sleep() в Python для имитации задержки в вашей программе. Возможно, вам нужно подождать, пока файл загрузится или скачается, или пока графика загрузится или будет нарисована на экране. Вам может понадобиться также делать паузы между вызовами веб-API или между запросами к базе данных. Добавление вызовов функции sleep() в вашу программу может помочь в каждом из этих случаев и во многих других!

В этом руководстве вы узнаете, как добавить вызовы функции sleep() в Python с использованием следующих способов:

  • time.sleep()
  • Декораторы
  • Потоки
  • Асинхронные операции ввода-вывода
  • Графические пользовательские интерфейсы

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

Добавление задержки времени в Python с помощью time.sleep()

Python имеет встроенную поддержку для задержки выполнения вашей программы. Модуль time содержит функцию sleep(), которую вы можете использовать для приостановки выполнения вызывающего потока на указанное количество секунд.

Вот пример использования time.sleep():

import time
time.sleep(3) # Приостановить выполнение на 3 секунды

Если вы запустите этот код в консоли, то вы должны ожидать задержку перед тем, как сможете ввести новый оператор в REPL.

Примечание: В Python 3.5 разработчики изменили поведение функции time.sleep() немного. Новый вызов функции sleep() будет длиться не менее указанного количества секунд, даже если сон будет прерван сигналом. Однако это не применяется, если сам сигнал вызывает исключение.

Вы можете проверить, сколько времени длится сон с помощью модуля timeit в Python:

Terminal window
$ python3 -m timeit -n 3 "import time; time.sleep(3)"
3 loops, best of 5: 3 sec per loop

Здесь вы запускаете модуль timeit с параметром -n, который говорит timeit, сколько раз нужно выполнить следующий оператор. Вы можете видеть, что timeit выполнил оператор 3 раза и что наилучшее время выполнения составило 3 секунды, что ожидалось.

По умолчанию timeit выполнит ваш код один миллион раз. Если вы запустите вышеуказанный код со значением -n по умолчанию, то при 3 секундах на итерацию ваш терминал замрет примерно на 34 дня! Модуль timeit имеет несколько других параметров командной строки, которые вы можете изучить в его документации.

Давайте создадим что-то более реалистичное. Системному администратору нужно знать, когда один из их сайтов выходит из строя. Вам хочется иметь возможность регулярно проверять статус кода сайта, но вы не хотите делать это слишком часто и нагружать сервер.

Вы можете использовать функцию time.sleep() для задержки между вызовами запросов:

import requests
import time
while True:
response = requests.get('http://example.com')
if response.status_code == 200:
print('Сайт работает!')
else:
print('Сайт не работает!')
time.sleep(60) # Приостановить выполнение на 60 секунд перед следующим запросом

В этом примере ваша программа будет выполнять запрос каждую минуту. Если status_code равен 200, то вы получите сообщение “Сайт работает!”, а если нет, то “Сайт не работает!“. Затем программа приостановит выполнение на 60 секунд и продолжит снова.

Конечно, это всего лишь пример использования функции time.sleep(). Вы также можете использовать эту функцию для решения других задач, таких как приостановка выполнения до завершения определенных операций или создание задержки между выполнением команд.

Добавление задержки времени с помощью декораторов, потоков, асинхронных операций ввода-вывода и графических пользовательских интерфейсов

Вам также могут понадобиться другие способы добавления задержки времени в ваш код. Вот некоторые из них:

  • Декораторы: Вы можете использовать декораторы, чтобы добавить задержку времени перед выполнением функции или метода. Например, вы можете создать декоратор, который вызывает функцию с помощью time.sleep() перед выполнением функции.
  • Потоки: Вы можете использовать потоки для выполнения задачи в фоновом режиме. Вы можете создавать задержку в выполнении кода, запуская его в отдельном потоке и вызывая time.sleep() в этом потоке.
  • Асинхронные операции ввода-вывода: Вы можете использовать асинхронные операции ввода-вывода, такие как asyncio.sleep(), для добавления задержки в асинхронном коде.
  • Графические пользовательские интерфейсы: Если вы разрабатываете графический пользовательский интерфейс с помощью библиотеки, такой как Tkinter или wxPython, вы можете добавить задержку времени с помощью функций after() или Sleep().

Конечно, каждый из этих способов имеет свои особенности и подходит для различных ситуаций. Вы можете изучить каждый из них более подробно в соответствующих документациях.

Заключение

Добавление задержки времени в ваш код может быть полезным во многих ситуациях. Функция sleep() в Python предоставляет простой способ приостановить выполнение программы на определенное время. Вы также можете использовать декораторы, потоки, асинхронные операции ввода-вывода или графические пользовательские интерфейсы для создания задержки времени в вашем коде.

Надеюсь, этот учебник помог вам понять, как добавить задержку времени в ваш код с помощью функции sleep() в Python. Happy coding!