Курс 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"
- Управление асинхронными задачами с помощью Semaphore
- Переопределение метода __lshift__
- Переименование файлов в Python
- Метод join() для объединения строк
- Метод init в Python
- Измерение времени выполнения кода с использованием time
- Глобальные переменные в Python
- Приближение чисел в Python
- Создание и обучение модели с Keras
- Генераторы в Python
- Оператор += для объединения строк
- Функция zip() — объединение последовательностей
- Делегирование в Python
- Генераторы в Python
- Concrete Paths в Python
- Абстракции словарей и множеств в Python
- Создание пустых функций и классов в Python
- TON Smart Challenge #2: участие и подготовка
- Метод Enumerate() для списков
- Метод setitem в Python
- Копирование в Python
- Руководство по библиотеке pydantic
- Замена переменных в Python
- Путь к интерпретатору Python
- Поиск повторов в списке
- Расчет времени выполнения кода
- Манипуляция формой массива в Numpy
- Декораторы в Python
- Работа с collections в Python.
- split() без разделителя
- Генераторы списков
- Создание .exe файла с pyinstaller
- Получение ID текущего процесса
- Работа с комплексными числами в Python
- Логирование в Python
- Разработка Telegram-ботов
- Измерение времени выполнения кода
- Применение функций в Python
- Работа с YAML в Python: PyYAML.
- Непрерывная проверка в Python
- Метод rpow в Python
- Ускоренный импорт библиотек
- Копирование и вставка текста в Python
- Генераторы в Python
- Переопределение метода len
- Переопределение метода
- Операции со строками в Python
- Метод __getitem__ в Python















