Найти тему
1,1K подписчиков

Программирование на Python. Многозадачность. Потоки. Threading, класс Thread

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

А это две из восьми подборок моего канала канала о программировании на языке Python.

Многозадачность в Python | programmer's notes (python and more) | Дзен
dzen.ru

Приложение 2 к видеоуроку (Приложение 1)

Модуль threading, класс Thread

Сегодня подробнее остановимся на класса Thread модуля threading. Конечно, мы его уже использовали, но необходимы и подробности.

Прототип конструктора

Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)

  • group — зарезервированный параметр;
  • target — вызываемая функция;
  • name — имя потока, если имя не указывать, присваиваются имена Thread-N, где N - не большое число.
  • args — кортеж аргументов для вызываемой функции;
  • kwargs — именованные параметры, упакованные в словарь;
  • daemon — указывает, является ли поток демоном.

После получения объекта класса Thread можно использовать набор методов:

  • start() — запускает поток.
  • run() вызывается после запуска потока и вызывает указанную при создании объекта функции, метод можно переопределить;
  • join(timeout=None) — ожидает окончания работы потока (присоединяясь к нему), либо заканчивает работу, по истечения времени timeout (вещественное число), вызывает исключение при попытке присоединиться к текущему потоку;
  • name — имя потока, может использоваться слева от знака равенства;
  • ident — идентификатор потока;
  • native_id — интегральный идентификатор потока;
  • is_alive() — возвращает True, если поток работает;
  • daemon — имеет значение True, если поток является демоном.

Ниже представлена программа несколько похожая на программу из Приложения 1.

Создаётся 10 потоков, у каждого из которых есть своё время жизни. Проверка того, что поток работает осуществляется в главном потоке с помощью метода is_alive().

Текст программы см. Ниже
Текст программы см. Ниже

Фрагмент работы программы

Поток 7  работает
Поток 8  работает
Поток 3 Thread-4  закончил работу
Поток 9  работает
Поток 5  работает
Поток 4 Thread-5  закончил работу
Поток 6  работает
Поток 7  работает
Поток 8  работает
Поток 9  работает
Поток 5 Thread-6  закончил работу
Поток 6  работает
Поток 7  работает
Поток 8  работает
Поток 9  работает
Поток 6 Thread-7  закончил работу

Хорошего программирования. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.

В каждой своей программе программист бог, творящий новый мир
В каждой своей программе программист бог, творящий новый мир