Курс 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. CLI-инструмент howdoi
  3. Настройка нарезки списков
  4. Непрерывная проверка в Python
  5. Операторы увеличения и уменьшения в Python
  6. Подсчет количества элементов в списке
  7. Python reversed() функция
  8. Генератор списка в Python
  9. Группировка элементов в словарь
  10. Работа с SQLite в Python
  11. Python: отличительная особенность — отступы
  12. Оператор морж в Python 3.8
  13. Склеивание строк без циклов
  14. Преобразование букв в нижний регистр
  15. Комментарии в Python
  16. Присвоение значений переменным в Python
  17. Python: динамическая типизация и проверка типов
  18. Основы Python за 14 дней
  19. Динамическая типизация в Python
  20. Оператор «not» в Python
  21. Передача аргументов в Python
  22. Метод __irshift__ для побитового сдвига вправо
  23. Управление асинхронными задачами с помощью Semaphore
  24. Объединение объектов в Python
  25. Конкатенация списков в Python
  26. capitalize() — изменение регистра первого символа строки
  27. Переворот списка в Python
  28. Возврат нескольких значений
  29. Метод matmul для умножения матриц
  30. Генераторы в Python
  31. Оператор @ для умножения матриц
  32. *args и **kwargs в Python
  33. Функции range() в Python
  34. Отрицательные индексы списков в Python
  35. Разделение строки с помощью re.split()
  36. Enum в Python
  37. Преобразование range в итератор
  38. Копирование списков в Python
  39. Методы обработки строк в Python
  40. Множественное присваивание в Python
  41. Генерация резюме в Gensim
  42. Подсчет вхождений элементов
  43. Навыки Python: строки, типы данных
  44. Преобразование строк в числа с плавающей запятой
  45. Разрешение имен в Python
  46. Функция enumerate() в Python
  47. Функция print() — вывод информации
  48. Генератор чисел Фибоначчи

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