Курс 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. Метод __int__ в Python
  2. Создание новых списков
  3. TON Smart Challenge #2: участие и подготовка
  4. Нахождение максимального значения и его индекса в списке
  5. Генератор чисел Фибоначчи
  6. Дизассемблирование Python кода
  7. Работа с эмодзи в Python
  8. Функции range() в Python
  9. Загрузка постов Instagram
  10. Оператор in для Python
  11. Переопределение метода __eq__
  12. Вычисление натуральных логарифмов в NumPy
  13. Сортировка с помощью параметра key
  14. Операции с массивами в NumPy
  15. Печать в одной строке
  16. Конвертация текстовых чисел с помощью Numerizer
  17. Профилирование данных с Pandas.
  18. Список импортированных модулей в Python
  19. Курс Data Scientist в медицине
  20. Преобразование Excel в PDF с Spire.XLS
  21. Именование переменных в Python
  22. Python reversed() функция
  23. Лямбда-функции для min/max
  24. Фильтрация списков с itertools
  25. Роль запятой в Python
  26. Блок else в циклах.
  27. Отправка HTTP-запросов с User-Agent
  28. Преобразование строки в число
  29. inspect в Python: анализ кода
  30. Работа с модулем glob в Python
  31. Определение индекса элемента списка
  32. Замена атрибута в именованном кортеже
  33. Распаковка значений в Python
  34. Модуль antigravity: генерация координат
  35. Поиск простых чисел
  36. Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
  37. Хешируемые ключи в Python
  38. Классы данных в Python
  39. Гибкие функции Python
  40. Модуль itertools: эффективная работа с итераторами
  41. Переопределение метода len
  42. Метод title() в Python
  43. Подсчет частотности элементов в Python
  44. Метод index() в Python
  45. Руководство по Pymorphy2

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