Курс 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. Библиотека Chartify: руководство
  2. Форматирование строк с % в Python
  3. Отладка в Python
  4. Абстракции словарей и множеств в Python
  5. Аннотации типов в Python
  6. Обработка ошибок ввода данных
  7. Установка Python3.7 и PIP
  8. Округление чисел с помощью round
  9. Простой калькулятор Python
  10. Замена подстроки
  11. Оператор «or» в Python
  12. Переопределение метода delitem в Python
  13. Работа с getopt
  14. Работа с набором данных CIFAR10 в PyTorch
  15. Работа с итераторами в Python
  16. Безопасный доступ к значениям словаря
  17. Библиотека sh: использование команд bash в Python
  18. Регулярные выражения в Python
  19. Округление дробей в Python
  20. Объединение словарей в Python
  21. Библиотека Emoji: использование смайлов в Python
  22. Генерация случайных чисел в Python
  23. Метод join() для объединения строк
  24. Частичное применение функций в Python
  25. Поиск кода
  26. Замена атрибута в именованном кортеже
  27. Генератор списка с условием if
  28. GitHub в Telegram: подписка на уведомления
  29. Генераторы списков в Python
  30. Область видимости переменных
  31. Работа с множествами в Python
  32. Объявление переменных в Python
  33. Функции в одну строку
  34. Работа с множествами в Python
  35. Манипуляция формой массива в Numpy
  36. Инверсия списка/строки в Python
  37. Оптимизация строк в Python
  38. Описание скриптов в README
  39. Регистрация на хакатоне
  40. Протокол управления контекстом
  41. Преобразование строки в число
  42. Оформление текста в консоли с TermColor
  43. Генератор списка в Python
  44. Измерение времени выполнения кода

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