Курс 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. Область видимости переменных
  4. Показ всплывающих окон Tkinter
  5. Расширение операции побитового «и» в Python
  6. Обход словаря в Python
  7. Модуль math: константы π и e
  8. Работа со строками в Python
  9. Динамическая типизация в Python
  10. Работа с timedelta в Python
  11. Ускорение выполнения кода в Python
  12. Оператор += для объединения строк
  13. Python defaultdict добавление ключа
  14. Установка пакета в Python
  15. Автоматизация скриптов на AWS Lightsail.
  16. Оператор in в Python
  17. Оператор распаковки в Python
  18. Конкатенация списков в Python
  19. Удаление элементов из списка в Python.
  20. Различия символов в Python
  21. Методы split() и join() — Python строк.
  22. Скачать видео с YouTube
  23. Блок try-except-else
  24. Функция rsplit() в Python
  25. Работа с атрибутом dict
  26. Удаление файлов с shutil.os.remove()
  27. Избегание изменяемых аргументов
  28. Библиотека itertools: объединение списков
  29. Использование type hints
  30. Метод classmethod
  31. Модуль Operator в Python
  32. Декоратор проверки активности
  33. Мощь вложенных функций в Python
  34. Удаление элементов по срезу
  35. Списковое включение в Python
  36. Копирование файлов с shutil()
  37. Поиск индексов в списке
  38. Функция map() и ленивая оценка
  39. TypedDict для kwargs в Python 3.12
  40. Работа с Telegram API на Python
  41. Метод eq для сравнения объектов
  42. TON Smart Challenge #2: участие и подготовка
  43. Проверка типов с помощью isinstance

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