Курс 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"
- Функция enumerate в Python
- Сортировка с помощью параметра key
- Объединение словарей в Python
- Принципы программирования
- Работа с NumPy массивами
- Ввод нескольких значений
- Перевод эмодзи и эмотиконов.
- Упрощение работы с JSON-данными в Python
- Область видимости переменных
- Модуль os в Python: работа с файлами
- Разделение строки на подстроки в Python
- Функции в одну строку
- Отправка HTTP-запросов с User-Agent
- Декоратор Ajax required
- Lambda Functions in Python
- Метод count() для списка
- Numpy: объединение массивов
- Объединение коллекций в Python
- Инициализация объекта
- Проверка дубликатов в Python
- Использование метода lower()
- Частичное совпадение пользовательского ввода в Python 3.10
- Функции all() и any() в Python
- Обработка ошибок в Python
- Генераторы в Python
- Получение идентификатора объекта в памяти
- Работа с геоданными с помощью geopy
- Разница между датами
- Участие в LP стейкинге Waves
- Работа с zip()
- Оператор in в Python
- Поиск кода
- Типы возвращаемых значений в Python
- Метод join() для объединения элементов
- Регулярные выражения в Python
- Работа с необработанными строками
- Класс-оболочка для словарей
- Генерация UUID в Python
- Установка и использование pyshorteners
- Срезы в Python
- Логирование с Logzero
- Работа с парами ключ-значение
- Структурирование данных с Pydantic
- Управление ресурсами в Python
- Логирование с Logzero
- Копирование в Python
- Метод join() для объединения элементов строки
- Декораторы в Python
- Управление контекстом выполнения кода















