Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Освоение 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

  1. Освоение типов данных в Python: практическое руководство
  2. Мастерство операторов Python: Полное руководство
  3. Оператор pass в Python: практическое руководство
  4. Аргументы функций в Python: позиционные, именованные и параметры по умолчанию
  5. Словари в Python: создание, манипуляции и продвинутые техники
  6. Итераторы в Python: как они работают и как создать свои
  7. Замыкания в Python: как вложенные функции захватывают переменные
  8. Модуль datetime в Python: практическое руководство по датам, времени и часовым поясам
  9. Получение текущей даты и времени в Python: практическое руководство
  10. Python: получение текущего времени и работы с часовыми поясами