Освоение Python time.sleep(): лучшие практики, многопоточность и реальные примеры
Функция time.sleep() в Python
Функция time.sleep() приостанавливает выполнение текущего потока на указанное количество секунд.
Модуль time в Python предлагает ряд утилит для работы со временем. Среди них time.sleep() незаменима для добавления намеренных задержек, синхронизации потоков или ограничения частоты операций.
Пример 1: Базовое использование
import time
print("Выводится сразу.")
time.sleep(2.4)
print("Выводится через 2.4 секунды.")
Этот простой скрипт демонстрирует, что time.sleep() принимает аргумент с плавающей точкой. В Python 3.5 и новее функция гарантирует минимальную длительность сна; в более ранних версиях она может спать чуть дольше.
Пример 2: Цифровые часы
import time
while True:
local = time.localtime()
print(time.strftime("%I:%M:%S %p", local))
time.sleep(1)
Цикл выводит текущее локальное время каждую секунду. Чтобы не загромождать терминал, улучшенная версия обновляет ту же строку:
import time
while True:
local = time.localtime()
print(time.strftime("%I:%M:%S %p", local), end="", flush=True)
print("\r", end="", flush=True)
time.sleep(1)
См. документацию Python по time.sleep() для более глубокого понимания.
Понимание потоков
Процесс — это выполняющаяся программа; потоки — легковесные единицы внутри этого процесса. Несколько потоков могут выполняться одновременно, используя одно и то же пространство памяти.
Пример 3: Простая многопоточность
import threading
def greet_hello():
for _ in range(3):
print("Hello")
def greet_hi():
for _ in range(3):
print("Hi")
t1 = threading.Thread(target=greet_hello)
t2 = threading.Thread(target=greet_hi)
t1.start()
t2.start()
Поскольку t1 и t2 выполняются параллельно, порядок вывода может меняться при каждом запуске.
time.sleep() в многопоточном контексте
В однопоточных программах time.sleep() останавливает весь процесс. В многопоточной среде приостанавливается только вызывающий поток, позволяя остальным продолжать работу.
Пример 4: Разная пауза в разных потоках
import threading, time
def say_hello():
for _ in range(4):
time.sleep(0.5)
print("Hello")
def say_hi():
for _ in range(4):
time.sleep(0.7)
print("Hi")
t1 = threading.Thread(target=say_hello)
t2 = threading.Thread(target=say_hi)
t1.start()
t2.start()
Здесь один поток спит 0.5 с, а другой — 0.7 с, иллюстрируя независимый темп выполнения.
Подробнее о многопоточности см. в модуле threading Python.
Python
- Освоение типов данных в Python: практическое руководство
- Мастерство операторов Python: Полное руководство
- Оператор pass в Python: практическое руководство
- Аргументы функций в Python: позиционные, именованные и параметры по умолчанию
- Словари в Python: создание, манипуляции и продвинутые техники
- Итераторы в Python: как они работают и как создать свои
- Замыкания в Python: как вложенные функции захватывают переменные
- Модуль datetime в Python: практическое руководство по датам, времени и часовым поясам
- Получение текущей даты и времени в Python: практическое руководство
- Python: получение текущего времени и работы с часовыми поясами