Курс 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
- Обработка исключений в Python
- Освоение Python
- Работа с комплексными числами
- Переворот списка в Python
- Отслеживание прогресса с tqdm
- Быстрый поиск кода
- Избегайте изменяемых аргументов
- Удаление дубликатов в pandas
- Создание и удаление объектов
- Поиск индексов в списке
- Протокол управления контекстом
- Подсчет элементов с помощью Counter из collections
- Измерение времени выполнения кода с использованием time
- Объединение кортежей в Python
- Добавление элемента в список.
- Генерация случайных данных в NumPy
- Работа с коллекциями Python
- Хэш-функции в Python
- Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
- Оптимизация создания строк
- EMOT преобразование эмодзи в текст
- Работа с исключениями в Python
- Генератор надежных паролей
- Запуск Python из интерпретатора
- Лямбда-функции в Python
- Транспонирование матрицы в Python
- Python Enum Weekday Usage
- Декоратор Property в Python
- Создание матрицы в Python
- Сравнение def и lambda функций в Python
- Таймер обратного отсчета
- Python Тесты и Гайды
- Управление браузером с Selenium
- Классы данных в Python
- Оператор «моржа» (Walrus Operator)
- Регистрация на курсы SF Education
- Проверка элементов списка условием
- Оператор is в Python
- Пустой оператор pass в Python
- Поиск индексов подстроки
- Объединение множеств в Python
- Удаление дубликатов с помощью множеств
- Установка и использование Virtualenv















