Как завершить процесс в python?

Добрый день.
Суть в том, что запускаю ffmpeg с помощью subprocess.Popen, и когда завершаю работу скрипта с помощью proc.kill() затем proc.terminate() затем sys.exit() , то ffmpeg продолжает висеть в диспетчере задач, хоть и не активен (т.е в столбике где написано ЦП показывает 0 ). Как убрать его полностью из диспетчера задач?
  • Вопрос задан
  • 8862 просмотра
Решения вопроса 1
@WorldEn Автор вопроса
Решил проблему с помощью библиотеки psutil
import psutil

parent_pid = 30437   # my example
parent = psutil.Process(parent_pid)
for child in parent.children(recursive=True):  # or parent.children() for recursive=False
    child.kill()
parent.kill()
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@kgbplus
Вероятно ffmpeg запускает подпроцессы. Убивайте всю группу:
pro = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True, preexec_fn=os.setsid) 
os.killpg(os.getpgid(pro.pid), signal.SIGTERM)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы