Курс 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. Управление асинхронными задачами с помощью Semaphore
  2. Переопределение метода __lshift__
  3. Переименование файлов в Python
  4. Метод join() для объединения строк
  5. Метод init в Python
  6. Измерение времени выполнения кода с использованием time
  7. Глобальные переменные в Python
  8. Приближение чисел в Python
  9. Создание и обучение модели с Keras
  10. Генераторы в Python
  11. Оператор += для объединения строк
  12. Функция zip() — объединение последовательностей
  13. Делегирование в Python
  14. Генераторы в Python
  15. Concrete Paths в Python
  16. Абстракции словарей и множеств в Python
  17. Создание пустых функций и классов в Python
  18. TON Smart Challenge #2: участие и подготовка
  19. Метод Enumerate() для списков
  20. Метод setitem в Python
  21. Копирование в Python
  22. Руководство по библиотеке pydantic
  23. Замена переменных в Python
  24. Путь к интерпретатору Python
  25. Поиск повторов в списке
  26. Расчет времени выполнения кода
  27. Манипуляция формой массива в Numpy
  28. Декораторы в Python
  29. Работа с collections в Python.
  30. split() без разделителя
  31. Генераторы списков
  32. Создание .exe файла с pyinstaller
  33. Получение ID текущего процесса
  34. Работа с комплексными числами в Python
  35. Логирование в Python
  36. Разработка Telegram-ботов
  37. Измерение времени выполнения кода
  38. Применение функций в Python
  39. Работа с YAML в Python: PyYAML.
  40. Непрерывная проверка в Python
  41. Метод rpow в Python
  42. Ускоренный импорт библиотек
  43. Копирование и вставка текста в Python
  44. Генераторы в Python
  45. Переопределение метода len
  46. Переопределение метода
  47. Операции со строками в Python
  48. Метод __getitem__ в Python

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