Найти в Дзене

Программирование на Python. Многозадачность. Модуль subprocess. Пример многопроцессного взаимодействия

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

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

Пример с многими процессами

Сегодня приведу пример возможности модуля subprocess. Ниже представлена программа, которая создаёт указанное количество процессов и далее позволяет осуществлять простейшие элементы управления процессами: получить список процессов с указанием, какой из них закончил свою работу, получить информацию о конкретном процессе, удалить конкретный процесс, выйти из программы с удалением дочерних процессов.

Ниже представлен текст дочернего процесса. Дочерний процесс при запуске получает свой уникальный номер nm. При запуске в дочернем процессе создаются два обработчика сигналов. alarm - обрабатывает сигнал SIGALRM и выполняет команду окончания работы процесса (sys.exit(0)). signal_usr1 - обработка сигнала SIGUSR1.

Текст программы p2.py см. ниже
Текст программы p2.py см. ниже
primer106.py

Ниже представлена программа родительского процесса. Программа создает указанное количество дочерних процессов на основе p2.py. Для этого используется метод Popen(). Созданные объекты, описывающие каждый из дочерних процессов, помещаются в список lp. Дальнейшее управление дочерними процессами осуществляется на основе этих объектов. Замечу, кстати, что с удалением дочернего процесса объект продолжает жить, показывая статус, что процесс завершён.

Программа родительского процесса, запускающая p2.py. Текст см. ниже
Программа родительского процесса, запускающая p2.py. Текст см. ниже
primer107.py

Замечание
Для упрощения тексты программы, я не стал добавлять в неё обработку разных не штатных ситуаций. Попробуйте добавить вы.

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

Переменная, у которой нет значения, это как имя человека без самого человека
Переменная, у которой нет значения, это как имя человека без самого человека