Курс 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"
- Оператор in и not in в Python
- Избегайте пустого списка
- Открытие, чтение и закрытие файла
- Метод pos в Python
- Срезы в Python
- Проверка на истинность объектов в Python
- Работа с изменяемыми списками
- Операции с числами в Python
- Генерация случайных данных в NumPy
- Работа с Path в Python
- Работа с геоданными с помощью geopy
- Оператор объединения словарей
- Функции any() и all() в Python
- Работа с множествами в Python
- Поиск простых чисел
- Создание словаря и множества
- Функция enumerate в Python
- Основные операции с библиотекой Numpy
- Методы сравнения множеств
- Переопределение метода xor в Python
- Методы Python для работы с данными
- Работа с аргументами командной строки
- Получение имени функции с помощью inspect
- Удаление элемента из списка в Python
- Преобразование объекта в строку
- Нан-рефлексивность в Python
- Генераторы списков в Python
- Хешируемые ключи в Python
- Добавление Progressbar в Python
- Поиск частых элементов в списке
- Распаковка с оператором *
- Python reversed() функция
- Операции с матрицами в Python
- Делегирование в Python
- Уникальные значения из списка
- Капитализация строк
- Курсы Яндекс Практикум
- Создание именованных кортежей в Python
- Управление ресурсами с контекстными менеджерами
- Автоматизация скриптов на AWS Lightsail.
- Изменение логики работы с временем
- Метод remove() для удаления элемента из списка
- Пропуск начальных строк с помощью dropwhile()
- Метод enumerate() в Python















