Курс 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. Сортировка данных с лямбда-функциями
  2. Метод lt для сортировки объектов
  3. Переворот строки
  4. Разрешение имен в Python
  5. Разделение строки на пары ключ-значение.
  6. Работа со строками в Python
  7. Область видимости переменных в Python
  8. Принципы Zen of Python
  9. Обработка исключений в Python
  10. Замеры производительности в Python
  11. Форматирование данных с pprint
  12. Множества и frozenset
  13. Курс Data Scientist в медицине
  14. Прокачанный трейсинг ошибок
  15. Работа с множествами в Python
  16. Генерация случайных чисел Python
  17. Создание Radio кнопок в tkinter
  18. Метод clear для коллекций
  19. Метод join() для объединения элементов строки
  20. enumerate() в Python для работы с индексами
  21. Работа со слайсами
  22. Хеши в Python
  23. Применение функций в Python
  24. Наследование в программировании
  25. Модуль pprint
  26. Разбиение строки в Python
  27. PATCH-запрос с библиотекой requests
  28. Распаковка элементов последовательности
  29. Замена подстроки
  30. Частичное совпадение пользовательского ввода в Python 3.10
  31. Отладка регулярных выражений в Python
  32. Поиск повторов в списке
  33. Глобальные переменные в Python
  34. Оператор «not» в Python
  35. Структуры данных в Python
  36. Группировка элементов Python
  37. Декораторы в Python
  38. Декораторы в Python
  39. Преобразование генераторов в циклы
  40. Работа с Event() в threading
  41. Подсчет элементов в списке с Counter
  42. Нахождение разницы между списками в Python
  43. Подсчет частотности элементов в Python
  44. Метод remove() для удаления элемента из списка
  45. Создание новых функций с помощью functools.partial
  46. Оператор Walrus в Python 3.8
  47. Работа с файлами в Python
  48. Объединение множеств в Python

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