Курс 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. Работа с enumerate()
  3. Создание пар из последовательностей
  4. Переменная с нижним подчеркиванием
  5. Работа с collections в Python.
  6. Оптимизация параметров в Python
  7. Оператор in для проверки наличия элемента
  8. Оператор «моржа» (Walrus Operator)
  9. Поиск повторов в списке
  10. 9 уловок для чистого кода
  11. Модуль functools в Python
  12. Аргумент по умолчанию
  13. Операторы присваивания в Python
  14. Очистка входных данных
  15. Использование модуля __future__
  16. Поиск самого длинного слова в списке с использованием max()
  17. Импорт модуля из другого каталога
  18. Форматирование данных с pprint
  19. Упрощенный вывод данных в Python
  20. Замена переменных в Python
  21. Метод eq для сравнения объектов
  22. Поиск всех индексов подстроки
  23. Класс-оболочка для словарей
  24. Генераторные функции в Python
  25. Извлечение аудио из видео
  26. Метод __ilshift__ для битового сдвига влево
  27. Применение промокода в Много лосося
  28. Подписка на каналы разработчиков
  29. Получение ID процесса
  30. Функция enumerate() в Python
  31. Вызов функций по строке в Python.
  32. Monkey Patching в Python
  33. Поиск кода
  34. Форматирование строк в Python
  35. Многострочные комментарии в Python
  36. Перевод двоичного кода в целое число
  37. Получение срезов итераторов
  38. Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
  39. Многопроцессорное программирование в Python
  40. Метод difference_update() — разность множеств
  41. Метод clear для коллекций
  42. Возврат нескольких значений из функции

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