Курс 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"
- Очистка вывода в Python
- Основные операции с библиотекой Numpy
- Метод join() для объединения элементов
- Пропуск начальных строк с помощью dropwhile()
- Работа с многоуровневыми словарями в Python
- Работа со списками
- Преобразование чисел в восьмеричную строку
- Функция findall() для поиска вхождений строки
- Работа с deque в Python
- Обработка аргументов Python
- Синхронизация доступа к ресурсам
- Абстракции словарей и множеств в Python
- Динамические маршруты во Flask
- Установка Home Assistant
- Замена текста с re.sub()
- Поиск шаблона в строке
- Приоритет операций в Python
- Python OrderedDict и fromkeys() — работа с словарями
- Получение списка файлов в директории с использованием os
- Работа с рекламными данными в Pandas
- Проверка существования переменной с оператором :=
- Модуль os: работа с файлами и папками
- Многострочные комментарии в Python
- Аннотации типов в Python
- Создание детектора плагиата
- Отладка производительности Python
- Безопасный доступ к значениям словаря
- Декораторы в Python
- Python: возвращение нескольких значений
- Замер времени выполнения кода
- Работа с Event() в threading
- Многострочные комментарии в Python
- Игра «Камень, ножницы, бумага» — Python
- Работа с библиотекой xkcd
- Namedtuple в Python
- Иерархия классов в Python
- Управление мышью и клавиатурой с Pyautogui
- Преобразование строк в числа с плавающей запятой
- Оболочка Python
- Визуализация пропусков данных
- Непрерывная проверка в Python
- Функции в Python: создание и вызов
- Работа с прокси в Python
- Навыки Python: строки, типы данных
- Разбиение текста в Python















