Курс 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. Модуль pprint: улучшение вывода данных
  3. Добавление элементов в список
  4. Декоратор @override
  5. Получение размера объекта с sys.getsizeof()
  6. Создание новых списков через list comprehensions
  7. Управление ресурсами в Python
  8. Основы Python
  9. Строки в Python: апострофы и кавычки
  10. Отправка поздравлений по дню рождения
  11. Python и Юникод: работа с цифрами
  12. Работа с процессами в Python
  13. split() без разделителя
  14. Измерение времени выполнения кода
  15. Частичное совпадение пользовательского ввода в Python 3.10
  16. Выбор редактора кода.
  17. Блок try-except-else
  18. Создание словарей в Python
  19. Работа с OpenCV
  20. Декоратор total_ordering для класса Point
  21. Удаление эмодзи с помощью pandas
  22. Импорт модулей и пакетов в Python
  23. Декораторы в Python
  24. Работа с Path в Python
  25. Переопределение метода sub
  26. Форматирование строк в Python
  27. Атрибуты класса и экземпляра
  28. Преобразование объекта в строку
  29. Импорт модуля из другого каталога
  30. Считывание бинарного файла в Python
  31. Множественное наследование в Python
  32. Извлечение аудио из видео
  33. Улучшенные подсказки для импорта в Python 3.12
  34. Работа с комбинациями в Python.
  35. Работа с библиотекой requests
  36. Деление в Python
  37. Объединение словарей в Python
  38. Сложные типы данных в Python
  39. Объединение словарей в Python
  40. Метод title() в Python
  41. Управление фоновыми задачами в Python
  42. Работа с Telegram API на Python
  43. Автоматизация действий с Pyautogui
  44. Поиск индекса элемента
  45. Работа с JSON данными в Python
  46. Вложенные циклы в Python
  47. Декораторы в Python

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