Курс 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. Функция enumerate в Python
  2. Сортировка с помощью параметра key
  3. Объединение словарей в Python
  4. Принципы программирования
  5. Работа с NumPy массивами
  6. Ввод нескольких значений
  7. Перевод эмодзи и эмотиконов.
  8. Упрощение работы с JSON-данными в Python
  9. Область видимости переменных
  10. Модуль os в Python: работа с файлами
  11. Разделение строки на подстроки в Python
  12. Функции в одну строку
  13. Отправка HTTP-запросов с User-Agent
  14. Декоратор Ajax required
  15. Lambda Functions in Python
  16. Метод count() для списка
  17. Numpy: объединение массивов
  18. Объединение коллекций в Python
  19. Инициализация объекта
  20. Проверка дубликатов в Python
  21. Использование метода lower()
  22. Частичное совпадение пользовательского ввода в Python 3.10
  23. Функции all() и any() в Python
  24. Обработка ошибок в Python
  25. Генераторы в Python
  26. Получение идентификатора объекта в памяти
  27. Работа с геоданными с помощью geopy
  28. Разница между датами
  29. Участие в LP стейкинге Waves
  30. Работа с zip()
  31. Оператор in в Python
  32. Поиск кода
  33. Типы возвращаемых значений в Python
  34. Метод join() для объединения элементов
  35. Регулярные выражения в Python
  36. Работа с необработанными строками
  37. Класс-оболочка для словарей
  38. Генерация UUID в Python
  39. Установка и использование pyshorteners
  40. Срезы в Python
  41. Логирование с Logzero
  42. Работа с парами ключ-значение
  43. Структурирование данных с Pydantic
  44. Управление ресурсами в Python
  45. Логирование с Logzero
  46. Копирование в Python
  47. Метод join() для объединения элементов строки
  48. Декораторы в Python
  49. Управление контекстом выполнения кода

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