Курс 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. Разделение строки с помощью re.split()
  2. Подсказки типов в Python
  3. Блок else в циклах Python
  4. Работа с каталогами в Python
  5. Разница между датами
  6. Метод clear для коллекций
  7. Обход дочерних элементов BeautifulSoup
  8. Подробная информация о %pinfo
  9. Пропуск строк в файле с itertools
  10. Функция format() в Python
  11. kwargs в Python
  12. Создание даты из строки ISO
  13. Модуль pprint: улучшение вывода данных
  14. Объединение словарей в Python
  15. ChainMap избыточные ключи
  16. Подсчет частотности элементов в Python
  17. Работа со строками в Python
  18. Чтение и запись TOML-конфигов
  19. Декораторы в Python
  20. Импорт модулей и пакетов в Python
  21. Новшества Flask 2.0
  22. Оболочка Python
  23. Курсы Яндекс Практикум
  24. Просмотр внешних файлов в %pycat
  25. Транспонирование 2D-массива с помощью zip
  26. Генерация случайных чисел в Python
  27. Подписка на каналы разработчиков
  28. Сравнение def и lambda-функций
  29. Операции с датами в Python
  30. Метод lt для сортировки объектов
  31. Поиск наиболее частого элемента в списке
  32. Переопределение метода __pow__
  33. Переменная с нижним подчеркиванием
  34. Получение текущей даты в Python
  35. Конвертация изображений в PDF
  36. Модуль inspect
  37. Основы Python
  38. Декораторы в Python
  39. Преобразование числа в восьмеричную строку
  40. Создание лямбда-функций
  41. Тип CodeType в Python.
  42. Определение функций с необязательными аргументами
  43. Установка и использование TensorFlow
  44. Списковый компрехеншен.

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