Курс 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. Печать месячного календаря
  2. Представление бесконечности в Python
  3. Pretty-printing JSON в Python
  4. Хеширование паролей с солью
  5. Модуль antigravity: генерация координат
  6. Основные операции с Numpy
  7. Работа с NumPy.linalg
  8. Методы в Python
  9. Progress с библиотекой tqdm
  10. Инверсия списка/строки в Python
  11. Повторение элементов списков
  12. Определение функций с необязательными аргументами
  13. Именованные аргументы в Python
  14. Оформление кода на Python
  15. Преобразование строк в числа в Python
  16. Оптимизация параметров в Python
  17. Модуль inspect
  18. Поиск с библиотекой Google
  19. Фильтрация списков с itertools
  20. Python Calendar Usage
  21. Создание .exe файла с pyinstaller
  22. Метод rsub для пользовательских чисел
  23. inspect в Python: анализ кода
  24. Проверка условий в Python
  25. Генерация тестовых данных с factory_boy
  26. Явный импорт переменных
  27. Работа с GitHub в Telegram
  28. Обработка исключений в Python
  29. Логический оператор «and» в Python
  30. Мощь вложенных функций в Python
  31. Функция с **kwargs в Python
  32. Разделение строки на подстроки в Python
  33. Оператор (*) в Python
  34. Объединение объектов в Python
  35. Отображение HTML кода в Python
  36. Создание пустых функций и классов в Python
  37. Преобразование букв в нижний регистр
  38. Объединение словарей в Python
  39. Метод splitlines() для разделения строк
  40. Функция map() в Python
  41. Выбор редактора кода.
  42. Метод __ilshift__ для битового сдвига влево
  43. Проверка памяти объекта
  44. Метод is_absolute() для PurePath
  45. Python Метод del.

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