Курс 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()
- Создание пар из последовательностей
- Переменная с нижним подчеркиванием
- Работа с collections в Python.
- Оптимизация параметров в Python
- Оператор in для проверки наличия элемента
- Оператор «моржа» (Walrus Operator)
- Поиск повторов в списке
- 9 уловок для чистого кода
- Модуль functools в Python
- Аргумент по умолчанию
- Операторы присваивания в Python
- Очистка входных данных
- Использование модуля __future__
- Поиск самого длинного слова в списке с использованием max()
- Импорт модуля из другого каталога
- Форматирование данных с pprint
- Упрощенный вывод данных в Python
- Замена переменных в Python
- Метод eq для сравнения объектов
- Поиск всех индексов подстроки
- Класс-оболочка для словарей
- Генераторные функции в Python
- Извлечение аудио из видео
- Метод __ilshift__ для битового сдвига влево
- Применение промокода в Много лосося
- Подписка на каналы разработчиков
- Получение ID процесса
- Функция enumerate() в Python
- Вызов функций по строке в Python.
- Monkey Patching в Python
- Поиск кода
- Форматирование строк в Python
- Многострочные комментарии в Python
- Перевод двоичного кода в целое число
- Получение срезов итераторов
- Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
- Многопроцессорное программирование в Python
- Метод difference_update() — разность множеств
- Метод clear для коллекций
- Возврат нескольких значений из функции















