Ожидание в Python: подробное руководство по отсрочке выполнения

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

  1. Использование функции time.sleep().
    Модуль timeв Python предоставляет функцию sleep(), которая позволяет вам ввести задержка в вашем коде. Аргумент sleep()определяет количество секунд для приостановки выполнения.
import time
print("Before the delay...")
time.sleep(5)  # Delay for 5 seconds
print("After the delay...")
  1. Использование класса threading.Timer.
    Модуль threadingпредоставляет класс Timer, который позволяет запланировать запуск функции после указанный интервал времени.
import threading
def delayed_function():
    print("Delayed function executed!")
print("Before the delay...")
timer = threading.Timer(3, delayed_function)  # Delay for 3 seconds
timer.start()
print("After the delay...")
  1. Асинхронная задержка с asyncio.sleep():
    Для асинхронного программирования на Python модуль asyncioпредлагает функцию sleep(), которую можно использовать для введения асинхронных задержек.
import asyncio
async def delayed_task():
    print("Before the delay...")
    await asyncio.sleep(2)  # Delay for 2 seconds
    print("After the delay...")
asyncio.run(delayed_task())
  1. Использование time.perf_counter()и цикла.
    Вы можете создать цикл, который будет непрерывно проверять прошедшее время, используя time.perf_counter(), пока не будет достигнута желаемая задержка.
import time
def delay(seconds):
    start_time = time.perf_counter()
    while time.perf_counter() - start_time < seconds:
        pass
print("Before the delay...")
delay(4)  # Delay for 4 seconds
print("After the delay...")

Реализовать задержки в Python можно различными способами, каждый из которых имеет свои преимущества и варианты использования. Используя такие методы, как функция time.sleep(), класс threading.Timer, asyncio.sleep()или time.perf_counter()с циклом, вы можете эффективно вводите задержки в ваш код по мере необходимости. Понимание и использование этих методов позволит вам эффективно обрабатывать сценарии, связанные с синхронизацией, в ваших программах Python.