Курс 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. Проектирование Singleton с метаклассом
  2. Проверка подстроки в строке
  3. Обработка исключений
  4. Сортировка списка по индексам
  5. Функция rsplit() в Python
  6. Удаление элемента по индексу в Python
  7. Вставка переменных в шаблоны Flask
  8. Retrying в Python: повторные вызовы
  9. Получение текущего времени в Python
  10. Аннотации типов в Python
  11. Генерация ключей RSA
  12. Избегание циклических зависимостей классов в Python
  13. Конвертация коллекций в Python.
  14. Функции высшего порядка в Python
  15. Получение частей дроби
  16. Подсчет элементов в Python
  17. Склеивание строк через метод join()
  18. Проверка кортежей.
  19. Работа с URL-адресами в Python
  20. Удаление дубликатов в pandas
  21. Декораторы в Python
  22. Перевод эмодзи и эмотиконов.
  23. Инверсия списка и строки в Python
  24. Введение в Python
  25. Открытие и запись файлов
  26. Функция zip() — объединение последовательностей
  27. Декораторы в Python
  28. Подсказки при вводе данных в Python
  29. Переопределение метода __floordiv__
  30. Работа с набором данных CIFAR10 в PyTorch
  31. Объединение коллекций в Python
  32. Синхронизация доступа к ресурсам
  33. Избегание изменяемых аргументов
  34. Python reversed() функция
  35. Кортежи в Python: особенности и преимущества
  36. Генераторы в Python
  37. Отправка POST запроса на сервер.
  38. Условные выражения в Python
  39. Условные выражения в Python
  40. Списковое включение в Python
  41. Оператор деления для класса Rational
  42. Основы Python
  43. Применение функции к элементам списка
  44. Работа со слайсами
  45. Переопределение метода __and__
  46. Преобразование списков в словарь
  47. Регистрация на курсы SF Education

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