Курс 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"
- capitalize() — изменение регистра первого символа строки
- List Comprehension Tutorial
- Изменение списка срезами
- Открытие и запись файлов
- Замена элементов в списке с помощью генераторов списков
- Печать списка с помощью метода join
- Retrying в Python: повторные вызовы
- Имена объектов в Python
- Определение функций с необязательными аргументами
- Подсчет элементов в Python
- Декоратор для группы пользователей в Django
- Инверсия списка/строки в Python
- Аннотации типов в Python
- Реализация операции -= для пользовательского класса
- Официальный канал Python в Telegram
- Сортировка данных с лямбда-функциями
- Поиск подстроки в строке
- Проверка версии Python
- Форматирование строк в Python
- Отладка утечек памяти в Python
- Создание словаря с значением по умолчанию
- Многострочные строки в Python
- Работа с timedelta
- Сравнение def и lambda-функций
- Преобразование range в итератор
- Деление в Python
- Замена подстроки
- Блок else в циклах Python
- Преобразование Word в PDF с Spire.Doc
- discard() — удаление элемента из множества
- Функциональное программирование.
- Взаимодействие с sys
- Управление User-Agent в Python
- PATCH-запрос с библиотекой requests
- Отладка регулярных выражений в Python
- Обмен значений переменных в Python
- Логирование с Logzero
- Равенство и идентичность в Python
- Метод repr() в Python
- Удаление пробелов методом translate()
- Создание GUI с Tkinter: Entry
- Дефолтные параметры в Python
- Открытие и редактирование скриптов Python
- Руководство по Pymorphy2
- Метод get() в Python















