Курс 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. Основные операции с библиотекой Numpy
  3. Метод join() для объединения элементов
  4. Пропуск начальных строк с помощью dropwhile()
  5. Работа с многоуровневыми словарями в Python
  6. Работа со списками
  7. Преобразование чисел в восьмеричную строку
  8. Функция findall() для поиска вхождений строки
  9. Работа с deque в Python
  10. Обработка аргументов Python
  11. Синхронизация доступа к ресурсам
  12. Абстракции словарей и множеств в Python
  13. Динамические маршруты во Flask
  14. Установка Home Assistant
  15. Замена текста с re.sub()
  16. Поиск шаблона в строке
  17. Приоритет операций в Python
  18. Python OrderedDict и fromkeys() — работа с словарями
  19. Получение списка файлов в директории с использованием os
  20. Работа с рекламными данными в Pandas
  21. Проверка существования переменной с оператором :=
  22. Модуль os: работа с файлами и папками
  23. Многострочные комментарии в Python
  24. Аннотации типов в Python
  25. Создание детектора плагиата
  26. Отладка производительности Python
  27. Безопасный доступ к значениям словаря
  28. Декораторы в Python
  29. Python: возвращение нескольких значений
  30. Замер времени выполнения кода
  31. Работа с Event() в threading
  32. Многострочные комментарии в Python
  33. Игра «Камень, ножницы, бумага» — Python
  34. Работа с библиотекой xkcd
  35. Namedtuple в Python
  36. Иерархия классов в Python
  37. Управление мышью и клавиатурой с Pyautogui
  38. Преобразование строк в числа с плавающей запятой
  39. Оболочка Python
  40. Визуализация пропусков данных
  41. Непрерывная проверка в Python
  42. Функции в Python: создание и вызов
  43. Работа с прокси в Python
  44. Навыки Python: строки, типы данных
  45. Разбиение текста в Python

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