Курс 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"
- Проектирование Singleton с метаклассом
- Проверка подстроки в строке
- Обработка исключений
- Сортировка списка по индексам
- Функция rsplit() в Python
- Удаление элемента по индексу в Python
- Вставка переменных в шаблоны Flask
- Retrying в Python: повторные вызовы
- Получение текущего времени в Python
- Аннотации типов в Python
- Генерация ключей RSA
- Избегание циклических зависимостей классов в Python
- Конвертация коллекций в Python.
- Функции высшего порядка в Python
- Получение частей дроби
- Подсчет элементов в Python
- Склеивание строк через метод join()
- Проверка кортежей.
- Работа с URL-адресами в Python
- Удаление дубликатов в pandas
- Декораторы в Python
- Перевод эмодзи и эмотиконов.
- Инверсия списка и строки в Python
- Введение в Python
- Открытие и запись файлов
- Функция zip() — объединение последовательностей
- Декораторы в Python
- Подсказки при вводе данных в Python
- Переопределение метода __floordiv__
- Работа с набором данных CIFAR10 в PyTorch
- Объединение коллекций в Python
- Синхронизация доступа к ресурсам
- Избегание изменяемых аргументов
- Python reversed() функция
- Кортежи в Python: особенности и преимущества
- Генераторы в Python
- Отправка POST запроса на сервер.
- Условные выражения в Python
- Условные выражения в Python
- Списковое включение в Python
- Оператор деления для класса Rational
- Основы Python
- Применение функции к элементам списка
- Работа со слайсами
- Переопределение метода __and__
- Преобразование списков в словарь
- Регистрация на курсы SF Education















