Курс 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. capitalize() — изменение регистра первого символа строки
  2. List Comprehension Tutorial
  3. Изменение списка срезами
  4. Открытие и запись файлов
  5. Замена элементов в списке с помощью генераторов списков
  6. Печать списка с помощью метода join
  7. Retrying в Python: повторные вызовы
  8. Имена объектов в Python
  9. Определение функций с необязательными аргументами
  10. Подсчет элементов в Python
  11. Декоратор для группы пользователей в Django
  12. Инверсия списка/строки в Python
  13. Аннотации типов в Python
  14. Реализация операции -= для пользовательского класса
  15. Официальный канал Python в Telegram
  16. Сортировка данных с лямбда-функциями
  17. Поиск подстроки в строке
  18. Проверка версии Python
  19. Форматирование строк в Python
  20. Отладка утечек памяти в Python
  21. Создание словаря с значением по умолчанию
  22. Многострочные строки в Python
  23. Работа с timedelta
  24. Сравнение def и lambda-функций
  25. Преобразование range в итератор
  26. Деление в Python
  27. Замена подстроки
  28. Блок else в циклах Python
  29. Преобразование Word в PDF с Spire.Doc
  30. discard() — удаление элемента из множества
  31. Функциональное программирование.
  32. Взаимодействие с sys
  33. Управление User-Agent в Python
  34. PATCH-запрос с библиотекой requests
  35. Отладка регулярных выражений в Python
  36. Обмен значений переменных в Python
  37. Логирование с Logzero
  38. Равенство и идентичность в Python
  39. Метод repr() в Python
  40. Удаление пробелов методом translate()
  41. Создание GUI с Tkinter: Entry
  42. Дефолтные параметры в Python
  43. Открытие и редактирование скриптов Python
  44. Руководство по Pymorphy2
  45. Метод get() в Python

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