В Python для завершения процесса и всех его дочерних подпроцессов можно использовать модуль subprocess
и метод terminate()
.
Для начала необходимо импортировать модули subprocess
и os
:
import subprocess import os
Затем, чтобы выполнить команду и создать дочерние процессы, мы можем использовать функцию subprocess.call()
. Например, давайте представим, что у нас есть команда, которую мы хотим запустить:
command = "python my_script.py" subprocess.call(command, shell=True)
Когда мы вызываем эту команду, будет создан процесс запуска нашего сценария my_script.py
.
Для завершения процесса и всех его дочерних процессов мы можем использовать метод terminate()
. Этот метод прерывает выполнение процесса. Мы можем перебрать все дочерние процессы и вызвать метод terminate()
для каждого из них. Для этого мы можем использовать модуль psutil
. Для его установки введите в командной строке pip install psutil
. Затем импортируем модуль:
import psutil
Далее, после вызова команды, мы можем получить идентификаторы всех дочерних процессов, связанных с этим процессом, с помощью функции psutil.Process()
и метода children()
:
process = psutil.Process(os.getpid()) children = process.children(recursive=True)
С помощью цикла for
мы можем перебрать все дочерние процессы и вызвать метод terminate()
для каждого из них:
for child in children: child.terminate()
В итоге, для завершения процесса и всех его дочерних подпроцессов код будет выглядеть следующим образом:
import subprocess import os import psutil command = "python my_script.py" subprocess.call(command, shell=True) process = psutil.Process(os.getpid()) children = process.children(recursive=True) for child in children: child.terminate()
Это примерно то, как вы можете завершить процесс и все его дочерние процессы в Python, используя модули subprocess
, os
и psutil
.