Курс 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
- CLI-инструмент howdoi
- Настройка нарезки списков
- Непрерывная проверка в Python
- Операторы увеличения и уменьшения в Python
- Подсчет количества элементов в списке
- Python reversed() функция
- Генератор списка в Python
- Группировка элементов в словарь
- Работа с SQLite в Python
- Python: отличительная особенность — отступы
- Оператор морж в Python 3.8
- Склеивание строк без циклов
- Преобразование букв в нижний регистр
- Комментарии в Python
- Присвоение значений переменным в Python
- Python: динамическая типизация и проверка типов
- Основы Python за 14 дней
- Динамическая типизация в Python
- Оператор «not» в Python
- Передача аргументов в Python
- Метод __irshift__ для побитового сдвига вправо
- Управление асинхронными задачами с помощью Semaphore
- Объединение объектов в Python
- Конкатенация списков в Python
- capitalize() — изменение регистра первого символа строки
- Переворот списка в Python
- Возврат нескольких значений
- Метод matmul для умножения матриц
- Генераторы в Python
- Оператор @ для умножения матриц
- *args и **kwargs в Python
- Функции range() в Python
- Отрицательные индексы списков в Python
- Разделение строки с помощью re.split()
- Enum в Python
- Преобразование range в итератор
- Копирование списков в Python
- Методы обработки строк в Python
- Множественное присваивание в Python
- Генерация резюме в Gensim
- Подсчет вхождений элементов
- Навыки Python: строки, типы данных
- Преобразование строк в числа с плавающей запятой
- Разрешение имен в Python
- Функция enumerate() в Python
- Функция print() — вывод информации
- Генератор чисел Фибоначчи















