Курс 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. Оператор «or» в Python
  2. Функция reversed() в Python
  3. Создание новых списков
  4. Создание namedtuple списком полей
  5. Изменение списка срезами
  6. Бесконечная проверка в Python
  7. Копирование списков в Python
  8. Преобразование чисел в Python
  9. TON Smart Challenge #2: участие и подготовка
  10. Многострочные комментарии в Python
  11. Нахождение хеша для бесконечности и NaN в Python
  12. Перевернуть список в Python
  13. Операторы += в Python
  14. List Comprehension Tutorial
  15. F-строки в Python
  16. Проверка элементов списка условием
  17. Копирование словарей и списков в Python
  18. Оператор «моржа» (Walrus Operator)
  19. Операции с комплексными числами
  20. Работа с файлами в Python
  21. Моржовый оператор в Python 3.8
  22. Асинхронное программирование с asyncio
  23. Метод invert для побитового отрицания
  24. Ускоренный импорт библиотек
  25. Управление ресурсами с контекстными менеджерами
  26. Фильтрация последовательности
  27. Создание вложенного генератора
  28. Методы в Python
  29. Обработка исключений в Python
  30. Создание детектора плагиата
  31. Преобразование типов данных в set comprehension
  32. Регистрация на курсы SF Education
  33. Функции map() и reduce() в Python
  34. Применение команды break
  35. Преобразование объекта в строку
  36. Хеширование паролей с использованием salt
  37. Создание словаря в Python
  38. Работа с файлами в Python
  39. Разделение строк в Python
  40. Python Ellipsis использование
  41. Комментарии в Python
  42. Метод сравнения объектов в Python
  43. Работа с кортежами
  44. Работа с модулем cmath
  45. Вычисление фазы комплексного числа
  46. Запрос DELETE с библиотекой requests
  47. Определение объема памяти объекта

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