Курс 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. Оператор in и not in в Python
  2. Избегайте пустого списка
  3. Открытие, чтение и закрытие файла
  4. Метод pos в Python
  5. Срезы в Python
  6. Проверка на истинность объектов в Python
  7. Работа с изменяемыми списками
  8. Операции с числами в Python
  9. Генерация случайных данных в NumPy
  10. Работа с Path в Python
  11. Работа с геоданными с помощью geopy
  12. Оператор объединения словарей
  13. Функции any() и all() в Python
  14. Работа с множествами в Python
  15. Поиск простых чисел
  16. Создание словаря и множества
  17. Функция enumerate в Python
  18. Основные операции с библиотекой Numpy
  19. Методы сравнения множеств
  20. Переопределение метода xor в Python
  21. Методы Python для работы с данными
  22. Работа с аргументами командной строки
  23. Получение имени функции с помощью inspect
  24. Удаление элемента из списка в Python
  25. Преобразование объекта в строку
  26. Нан-рефлексивность в Python
  27. Генераторы списков в Python
  28. Хешируемые ключи в Python
  29. Добавление Progressbar в Python
  30. Поиск частых элементов в списке
  31. Распаковка с оператором *
  32. Python reversed() функция
  33. Операции с матрицами в Python
  34. Делегирование в Python
  35. Уникальные значения из списка
  36. Капитализация строк
  37. Курсы Яндекс Практикум
  38. Создание именованных кортежей в Python
  39. Управление ресурсами с контекстными менеджерами
  40. Автоматизация скриптов на AWS Lightsail.
  41. Изменение логики работы с временем
  42. Метод remove() для удаления элемента из списка
  43. Пропуск начальных строк с помощью dropwhile()
  44. Метод enumerate() в Python

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