Курс 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. Цикл while в Python
  2. Функция rsplit() в Python
  3. Генераторы в Python
  4. Каналы Senior: Python, Java, Frontend, SQL, C++
  5. Установка и использование TensorFlow
  6. Любовь к Python
  7. Многострочные комментарии в Python
  8. Работа с кортежами в Python
  9. Переопределение метода __or__()
  10. Подсчет часто встречающихся элементов
  11. Определение объема памяти объекта
  12. Создание словаря и множества
  13. Работа с collections.Counter
  14. Python 3.12: Псевдонимы типов
  15. Получение локальных переменных в Python
  16. Протокол управления контекстом
  17. Поиск частых элементов в списке
  18. Тайное преобразование типа ключа
  19. Управление контекстом выполнения кода
  20. Пересечение списков с использованием множеств
  21. Оператор @ для умножения матриц
  22. Таймер обратного отсчета
  23. Открытие и запись файлов
  24. Получение текущей даты в Python
  25. Оператор == в Python
  26. Удаление пробелов методом translate()
  27. Локальные переменные.
  28. Добавление кнопки в tkinter
  29. Удаление элемента по индексу
  30. Справка по импортированным модулям
  31. UserString в Python
  32. Итерации в Python
  33. Поиск индексов в списке
  34. Функция reversed() в Python
  35. Подсказки типов в Python
  36. Исправление ошибки NameError
  37. Работа с JSON данными в Python
  38. Объединение словарей в Python 3.5+
  39. Импорт модулей и пакетов в Python
  40. Установка Home Assistant
  41. Прокачанный трейсинг ошибок
  42. Мощь вложенных функций в Python
  43. Инициализация объекта
  44. Сортировка элементов с OrderedDict
  45. Python itertools combinations() — группировка элементов

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