Курс 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. Улучшение читаемости кода в Python
  2. Замер времени выполнения кода
  3. Модуль antigravity: генерация координат
  4. Работа с zip()
  5. Функция count() в Python
  6. Декораторы в Python
  7. Курсы Яндекс Практикум
  8. Работа с функцией next() в Python
  9. Оператор «not» в Python
  10. Модуль subprocess: запуск внешних команд
  11. Удаление ссылок в Python
  12. Создание словарей и множеств в Python
  13. Инициализация объекта
  14. Функциональное программирование.
  15. Работа с контекстными переменными
  16. Сортировка в Python
  17. Параллельные вычисления в Python
  18. Обратное распространение ошибки
  19. Вложенные функции в Python
  20. Объединение списков в Python.
  21. Расширение операции побитового «и» в Python
  22. Combobox в Tkinter
  23. Работа с JSON в Python
  24. Функции с необязательными аргументами
  25. Импорт модулей и пакетов в Python
  26. Метод enumerate() в Python
  27. Переворот последовательности
  28. Управление контекстом выполнения
  29. Гибкие функции Python
  30. Удаление элемента из списка
  31. Метод lt для сортировки объектов
  32. Переопределение метода divmod
  33. Подсчет элементов в списке с Counter
  34. Defaultdict в Python
  35. Эффективная конкатенация строк в Python
  36. Комментарии в Python
  37. Работа с f-строками 2.0
  38. Python 3.12: переиспользование кавычек
  39. Обмен значений переменных в Python
  40. Распаковка значений в Python
  41. Визуализация пропусков данных
  42. Оператор «and» в Python
  43. Генераторы в Python
  44. Анонимные функции Lambda
  45. Создание спинбокса в tkinter
  46. Частичное совпадение ввода

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