Python: убить подпроцесс тензорного потока - PullRequest
0 голосов
/ 26 июня 2019

Можно ли убить процесс другого пользователя с помощью python, используя:

import subprocess

def killProcess(pid):
    p = subprocess.Popen(['sudo','kill','-9',str(pid)], stdout=subprocess.PIPE)

Потому что, если я выполню это, ничего не произойдет. Если я выполняю sudo kill -9 pid в терминале, независимо от того, какой пользователь Iam вошел в систему, он работает.Поэтому я думаю, что что-то не так с моим исполнением в Popen. Я пытаюсь уничтожить подпроцессы, порожденные модулем многопроцессорности pythons.Каждый из этих подпроцессов создает экземпляры тензорного потока.Когда основной процесс уничтожил подпроцессы, все еще блокирующие память графических процессоров, и, следовательно, его необходимо уничтожить.

Я также попробовал подход psutil.Process(pid).terminate().Но потом я получаю сообщение об ошибке:

AccessDenied: psutil.AccessDenied (pid=326080)

У кого-нибудь есть идеи?

С уважением!

1 Ответ

0 голосов
/ 26 июня 2019

попробуйте использовать psutil,

for i in psutil.process_iter():
   if 'tensorflow' in i.name():
       i.kill()

или

[i.kill() for i in psutil.process_iter() if 'tensorflow' in i.name()]

Каждый процесс имеет свой собственный атрибут .kill().

...