использование python subprocess.call для уничтожения всех запущенных файлов python - PullRequest
0 голосов
/ 11 марта 2012

Я пытаюсь убить (по требованию) все процессы Python, которые выполняются в данный момент.
Я использовал эту команду:

from subprocess import call  
call('pkill python', shell=True)  
print 'Killed them all!'

Но, конечно, моя программатакже является программой на Python, поэтому в конечном итоге она не достигает строки печати после вызова 'call'.

Что я могу сделать, чтобы моя программа не убивала себя и одновременно убивала все остальные процессы Python?
Спасибо.

Ответы [ 2 ]

6 голосов
/ 11 марта 2012

Возможно, вы захотите попробовать кроссплатформенную psutil библиотеку:

import os
import psutil

mypid = os.getpid()
for proc in psutil.process_iter():
    if proc.name == 'python' and proc.pid != mypid:
        proc.kill()
0 голосов
/ 11 марта 2012

Если вы вызовете pgrep python, вы сможете прочитать в pids (идентификаторах процессов) всех запущенных процессов python. Вы, вероятно, захотите subprocess.check_output для этого.

Затем вы можете запустить пиды, убивающие каждого (используя os.kill), за исключением того, который соответствует вашему собственному пиду, который вы найдете, используя os.getpid.

...