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

Ожидание в Python: Использование и решение проблем

CodeMDD.io

Python sleep(): Как добавить задержку времени в ваш код

Автор: Mike Driscoll (продолжающий)

Введение

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

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

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

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

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

Давайте начнем!

Добавление вызова функции sleep() с помощью time.sleep()

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

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

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

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

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

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

Terminal window
$ python3 -m timeit -n 3 "import time; time.sleep(3)"
3 цикла, лучшее из 5: 3 секунды на цикл

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

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

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

import requests
import time
def check_website(url):
while True:
response = requests.get(url)
if response.status_code != 200:
print(f"Website is down with status code {response.status_code}")
else:
print("Website is up!")
time.sleep(60) # Подождать 60 секунд перед следующей проверкой

В этом примере вы используете бесконечный цикл для проверки статуса веб-сайта. Если код статуса не является 200, то выводится сообщение о том, что веб-сайт не работает, в противном случае выводится сообщение о том, что веб-сайт работает. Затем ваш код спит на 60 секунд перед следующей проверкой. Таким образом, у вас есть задержка в одну минуту между каждой проверкой.

Заключение

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

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

Использование функции sleep() может быть полезным, когда вам нужно добавить временную задержку в вашем коде, чтобы учесть определенные условия или обеспечить более плавную работу программы. Однако следует быть осторожным при использовании задержек, чтобы не замедлить программу слишком сильно или вызвать неожиданное поведение.

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

Это была переведенная статья на русский язык на основе оригинальной статьи “Python sleep(): How to Add Time Delays to Your Code” автора Mike Driscoll.