Курс Python → Синхронизация потоков с time.sleep()

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

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

import threading
import time

def print_thread_name(threadName):
    print(threadName)

# Создание двух потоков
thread1 = threading.Thread(target=print_thread_name, args=('Thread 1',))
thread2 = threading.Thread(target=print_thread_name, args=('Thread 2',))

# Запуск потоков
thread1.start()
thread2.start()

try:
    # Цикл для каждого входа из главного потока
    while True:
        time.sleep(1)
except KeyboardInterrupt:
    # Обработка прерывания пользователем
    print('Выход из программы')

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

При нажатии комбинации клавиш ^Ctrl+C происходит исключение KeyboardInterrupt, которое позволяет корректно завершить выполнение программы и вывести сообщение о выходе. Таким образом, использование time.sleep() вместе с модулем threading позволяет эффективно управлять потоками и обеспечивать безопасное выполнение программы.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Получение текущей даты в Python
  2. Форматирование заголовков в Python
  3. Оператор распаковки в Python
  4. Измерение времени выполнения кода
  5. Оператор «not» в Python
  6. Повторение элементов списков
  7. Извлечение данных из JSON
  8. Генераторы списков в Python
  9. Операция += для списков
  10. Закрытие файла в Python
  11. Объединение списков в Python
  12. Python Calendar Usage
  13. Утечки переменных цикла в Python 3.x
  14. Модуль xkcd: добавление юмора в Python
  15. Генератор чисел Фибоначчи
  16. Логирование с Logzero
  17. Встроенные функции Python
  18. Хеширование паролей с солью
  19. Подписка на SelectelNews в Twitter
  20. Списковый компрехеншен.
  21. Метод join для наборов
  22. Оператор Walrus: правильное использование
  23. Реверс строки и списка в Python.
  24. Переопределение метода divmod
  25. Форматирование строк с % в Python
  26. Использование html-скриптов в Jupyter Notebook
  27. Библиотека Rich: форматирование текста
  28. Извлечение аудио из видео
  29. Работа с переменными в Python
  30. Преобразование типов данных в set comprehension
  31. Установка и использование Virtualenv
  32. Создание словарей с defaultdict()
  33. Генерация случайных данных в NumPy
  34. Enum в Python
  35. Проверка однородности элементов списка
  36. Разделение функций на этапы
  37. Метод __float__ в Python
  38. Отладчик pdb: начало работы
  39. Оптимизация гиперпараметров с Scikit Optimize
  40. Форматирование строк в Python
  41. Подсчет частотности элементов в Python
  42. split() — разделение строки
  43. Сравнение def и lambda функций в Python

Marketello читают маркетологи из крутых компаний