Курс 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"
- Сортировка данных с лямбда-функциями
- Метод lt для сортировки объектов
- Переворот строки
- Разрешение имен в Python
- Разделение строки на пары ключ-значение.
- Работа со строками в Python
- Область видимости переменных в Python
- Принципы Zen of Python
- Обработка исключений в Python
- Замеры производительности в Python
- Форматирование данных с pprint
- Множества и frozenset
- Курс Data Scientist в медицине
- Прокачанный трейсинг ошибок
- Работа с множествами в Python
- Генерация случайных чисел Python
- Создание Radio кнопок в tkinter
- Метод clear для коллекций
- Метод join() для объединения элементов строки
- enumerate() в Python для работы с индексами
- Работа со слайсами
- Хеши в Python
- Применение функций в Python
- Наследование в программировании
- Модуль pprint
- Разбиение строки в Python
- PATCH-запрос с библиотекой requests
- Распаковка элементов последовательности
- Замена подстроки
- Частичное совпадение пользовательского ввода в Python 3.10
- Отладка регулярных выражений в Python
- Поиск повторов в списке
- Глобальные переменные в Python
- Оператор «not» в Python
- Структуры данных в Python
- Группировка элементов Python
- Декораторы в Python
- Декораторы в Python
- Преобразование генераторов в циклы
- Работа с Event() в threading
- Подсчет элементов в списке с Counter
- Нахождение разницы между списками в Python
- Подсчет частотности элементов в Python
- Метод remove() для удаления элемента из списка
- Создание новых функций с помощью functools.partial
- Оператор Walrus в Python 3.8
- Работа с файлами в Python
- Объединение множеств в Python















