Курс 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. Группировка элементов Python
  3. Подсчет элементов в Python
  4. Работа с необработанными строками
  5. Метод setdefault() в Python
  6. Экспорт внешнего файла с помощью writefile
  7. Работа с аргументами командной строки
  8. Поиск с библиотекой Google
  9. Библиотека funcy: удобные утилиты
  10. Оператор обр. импликации
  11. Цикл for в Python
  12. Создание генераторов в Python
  13. Непрерывная проверка в Python
  14. Инициализация структур данных
  15. Сортировка данных с лямбда-функциями
  16. Генерация случайных чисел в Python
  17. Оператор морж в Python 3.8
  18. Сравнение def и lambda функций в Python
  19. Установка и использование библиотеки google
  20. Тип данных TypeVarTuple
  21. Сериализация данных в JSON с помощью json.dumps
  22. Философия Python
  23. Создание словаря с значением по умолчанию
  24. Метод getitem для доступа к элементам последовательности
  25. Взаимодействие с sys
  26. EMOT преобразование эмодзи в текст
  27. Создание веб-приложения с Flask
  28. Отображение HTML кода в Python
  29. Оператор объединения словарей
  30. Объединение словарей в Python
  31. Модуль Operator в Python
  32. Итераторы в Python
  33. F-строки в Python 3.8
  34. Модуль xkcd: добавление юмора в Python
  35. Библиотека sh: удобные команды терминала
  36. Работа с модулем cmath
  37. Создание новых функций с помощью functools.partial
  38. Итерация по копии коллекции
  39. Итерация по коллекции в Python
  40. Использование метода lower()
  41. Форматирование строк в Python
  42. История Python
  43. Защита данных в Python
  44. Статическая типизация в Python
  45. Работа со строками в Python

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