Курс 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. Работа с файловой системой в Python
  3. Конкатенация строк с join() в Python
  4. Оценка выражений генератора в Python
  5. Функция pow() — возвести число в степень
  6. Перегрузка операторов в Python
  7. Счетчик в Python: most_common()
  8. Функции в Python
  9. Solidity для DeFi Ethereum
  10. Построение графиков в Matplotlib
  11. Структурирование данных с Pydantic
  12. Оформление кода на Python
  13. Очистка данных в Python
  14. Упрощение условных выражений с тернарным оператором
  15. Сортировка с параметром key
  16. Генератор данных в Keras
  17. Пропуск начальных строк с помощью dropwhile()
  18. Лямбда-функции в Python
  19. Работа с deque в Python
  20. Python reversed() функция
  21. Метод Self в Python
  22. Создание вложенных циклов for
  23. Замена символов в Python
  24. Функция __init__ в Python
  25. Хэш-функции в Python
  26. Тестирование с responses
  27. Каналы Senior: Python, Java, Frontend, SQL, C++
  28. Методы обработки строк в Python
  29. Удаление файлов в Python
  30. Python Translator: создание локальных переводчиков
  31. Шаблоны и наследование в Flask
  32. Исправление ошибки NameError
  33. История Python
  34. Проверка переменных окружения в Python
  35. Множества и frozenset
  36. Выражения-генераторы в Python
  37. Объединение коллекций в Python
  38. Моржовый оператор в Python 3.8
  39. Многострочные комментарии в Python
  40. Избегайте ошибку FileNotFoundError
  41. Python 3.12: Псевдонимы типов
  42. Форматирование заголовков в Python
  43. Тестирование модели в PyTorch
  44. Курс Data Scientist в медицине

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