Курс 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"
- Метод __int__ в Python
- Создание новых списков
- TON Smart Challenge #2: участие и подготовка
- Нахождение максимального значения и его индекса в списке
- Генератор чисел Фибоначчи
- Дизассемблирование Python кода
- Работа с эмодзи в Python
- Функции range() в Python
- Загрузка постов Instagram
- Оператор in для Python
- Переопределение метода __eq__
- Вычисление натуральных логарифмов в NumPy
- Сортировка с помощью параметра key
- Операции с массивами в NumPy
- Печать в одной строке
- Конвертация текстовых чисел с помощью Numerizer
- Профилирование данных с Pandas.
- Список импортированных модулей в Python
- Курс Data Scientist в медицине
- Преобразование Excel в PDF с Spire.XLS
- Именование переменных в Python
- Python reversed() функция
- Лямбда-функции для min/max
- Фильтрация списков с itertools
- Роль запятой в Python
- Блок else в циклах.
- Отправка HTTP-запросов с User-Agent
- Преобразование строки в число
- inspect в Python: анализ кода
- Работа с модулем glob в Python
- Определение индекса элемента списка
- Замена атрибута в именованном кортеже
- Распаковка значений в Python
- Модуль antigravity: генерация координат
- Поиск простых чисел
- Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
- Хешируемые ключи в Python
- Классы данных в Python
- Гибкие функции Python
- Модуль itertools: эффективная работа с итераторами
- Переопределение метода len
- Метод title() в Python
- Подсчет частотности элементов в Python
- Метод index() в Python
- Руководство по Pymorphy2















