Курс 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
- Метод get для словарей
- Форматирование заголовков в Python
- Работа с Path в Python
- Переопределение метода sub
- Структура данных deque в Python
- Рациональные числа в Python
- Форматирование строк в Python
- Метод count() для списков
- Сравнение def и lambda функций в Python
- Встроенные функции Python
- Оператор * в Python
- Enum в Python
- Создание панели меню Tkinter
- Функции min(), max(), sum()
- Retrying в Python: повторные вызовы
- Отображение графиков в Jupyter с Matplotlib
- Замер времени выполнения кода
- Импорт модулей и пакетов в Python
- Декоратор защиты анонимных пользователей
- Python: отличительная особенность — отступы
- Сортировка в Python
- Переопределение метода len
- Модуль itertools: комбинации и перестановки
- Создание словарей в Python
- Защита данных в Python
- Метод Enumerate() для списков
- Итераторы с потерямиZIP
- Работа с файлами в Python
- Подсчет количества элементов в списке
- Методы обработки строк в Python
- Управление контекстом выполнения кода
- Создание директории в Python
- Частичное применение функций в Python
- Работа со слайсами
- Создание .exe файла с pyinstaller
- Перебор элементов списка в Python
- Работа с SQLite в Python
- Добавление кнопки в tkinter
- Создание итерируемых объектов
- Очистка входных данных
- Удаление эмодзи с помощью pandas
- Python OrderedDict и fromkeys() — работа с словарями
- Поиск файлов по шаблону
- Методы split() и join() — Python строк.
- Метод __float__ в Python















