Курс 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. Перевод эмодзи и эмотиконов.
  3. Работа со словарями в Python
  4. Обработка исключений в Python
  5. Освоение Python
  6. Работа с комплексными числами
  7. Переворот списка в Python
  8. Отслеживание прогресса с tqdm
  9. Быстрый поиск кода
  10. Избегайте изменяемых аргументов
  11. Удаление дубликатов в pandas
  12. Создание и удаление объектов
  13. Поиск индексов в списке
  14. Протокол управления контекстом
  15. Подсчет элементов с помощью Counter из collections
  16. Измерение времени выполнения кода с использованием time
  17. Объединение кортежей в Python
  18. Добавление элемента в список.
  19. Генерация случайных данных в NumPy
  20. Работа с коллекциями Python
  21. Хэш-функции в Python
  22. Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
  23. Оптимизация создания строк
  24. EMOT преобразование эмодзи в текст
  25. Работа с исключениями в Python
  26. Генератор надежных паролей
  27. Запуск Python из интерпретатора
  28. Лямбда-функции в Python
  29. Транспонирование матрицы в Python
  30. Python Enum Weekday Usage
  31. Декоратор Property в Python
  32. Создание матрицы в Python
  33. Сравнение def и lambda функций в Python
  34. Таймер обратного отсчета
  35. Python Тесты и Гайды
  36. Управление браузером с Selenium
  37. Классы данных в Python
  38. Оператор «моржа» (Walrus Operator)
  39. Регистрация на курсы SF Education
  40. Проверка элементов списка условием
  41. Оператор is в Python
  42. Пустой оператор pass в Python
  43. Поиск индексов подстроки
  44. Объединение множеств в Python
  45. Удаление дубликатов с помощью множеств
  46. Установка и использование Virtualenv

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