Курс 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"
- Печать месячного календаря
- Представление бесконечности в Python
- Pretty-printing JSON в Python
- Хеширование паролей с солью
- Модуль antigravity: генерация координат
- Основные операции с Numpy
- Работа с NumPy.linalg
- Методы в Python
- Progress с библиотекой tqdm
- Инверсия списка/строки в Python
- Повторение элементов списков
- Определение функций с необязательными аргументами
- Именованные аргументы в Python
- Оформление кода на Python
- Преобразование строк в числа в Python
- Оптимизация параметров в Python
- Модуль inspect
- Поиск с библиотекой Google
- Фильтрация списков с itertools
- Python Calendar Usage
- Создание .exe файла с pyinstaller
- Метод rsub для пользовательских чисел
- inspect в Python: анализ кода
- Проверка условий в Python
- Генерация тестовых данных с factory_boy
- Явный импорт переменных
- Работа с GitHub в Telegram
- Обработка исключений в Python
- Логический оператор «and» в Python
- Мощь вложенных функций в Python
- Функция с **kwargs в Python
- Разделение строки на подстроки в Python
- Оператор (*) в Python
- Объединение объектов в Python
- Отображение HTML кода в Python
- Создание пустых функций и классов в Python
- Преобразование букв в нижний регистр
- Объединение словарей в Python
- Метод splitlines() для разделения строк
- Функция map() в Python
- Выбор редактора кода.
- Метод __ilshift__ для битового сдвига влево
- Проверка памяти объекта
- Метод is_absolute() для PurePath
- Python Метод del.















