Курс 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"
- Разделение строки с помощью re.split()
- Подсказки типов в Python
- Блок else в циклах Python
- Работа с каталогами в Python
- Разница между датами
- Метод clear для коллекций
- Обход дочерних элементов BeautifulSoup
- Подробная информация о %pinfo
- Пропуск строк в файле с itertools
- Функция format() в Python
- kwargs в Python
- Создание даты из строки ISO
- Модуль pprint: улучшение вывода данных
- Объединение словарей в Python
- ChainMap избыточные ключи
- Подсчет частотности элементов в Python
- Работа со строками в Python
- Чтение и запись TOML-конфигов
- Декораторы в Python
- Импорт модулей и пакетов в Python
- Новшества Flask 2.0
- Оболочка Python
- Курсы Яндекс Практикум
- Просмотр внешних файлов в %pycat
- Транспонирование 2D-массива с помощью zip
- Генерация случайных чисел в Python
- Подписка на каналы разработчиков
- Сравнение def и lambda-функций
- Операции с датами в Python
- Метод lt для сортировки объектов
- Поиск наиболее частого элемента в списке
- Переопределение метода __pow__
- Переменная с нижним подчеркиванием
- Получение текущей даты в Python
- Конвертация изображений в PDF
- Модуль inspect
- Основы Python
- Декораторы в Python
- Преобразование числа в восьмеричную строку
- Создание лямбда-функций
- Тип CodeType в Python.
- Определение функций с необязательными аргументами
- Установка и использование TensorFlow
- Списковый компрехеншен.















