Можно ли убить процесс в Windows из Python?
Я использую Python 2.6. Иногда возникает несколько случаев открытия определенного процесса, и этот процесс сам по себе вызывает некоторые проблемы. Я хочу, чтобы иметь возможность программно обнаруживать, что есть несколько экземпляров этого процесса и убивать их.
Например, возможно, в некоторых случаях открыто 50 экземпляров make.exe. Я хочу сказать, что открыто 20 экземпляров и убить их всех. Как это достигается?
Ответы
Ответ 1
Я думаю, вы могли бы просто использовать taskkill и Python os.system()
import os
os.system("taskkill /im make.exe")
Примечание. Я хотел бы отметить, что вам, возможно, придется полностью квалифицировать путь taskkill. Я использую ящик Linux, поэтому я не могу проверить...
Ответ 2
Вы можете использовать TerminateProcess
win32 api, чтобы убить процесс. См. Следующий пример: http://code.activestate.com/recipes/347462-terminating-a-subprocess-on-windows/
Вам нужно дать ему дескриптор процесса. Если процесс запускается из вашего кода, дескриптор процесса возвращается CreateProcess или popen.
Если процесс был запущен чем-то другим, вам нужно получить этот дескриптор, который вы можете использовать EnumProcess или WMI, чтобы получить его.
Ответ 3
Как насчет этого, я протестировал его с помощью ActiveState Python 2.7:
import sys, traceback, os
def pkill (process_name):
try:
killed = os.system('tskill ' + process_name)
except Exception, e:
killed = 0
return killed
назовите его с помощью
pkill("program_name")
Ответ 4
Да, вы можете это сделать
import os
os.system("taskkill /f /im Your_Process_Name.exe")
Ответ 5
Существует хорошая кросс-платформенная утилита python psutil, которая предоставляет kill() для процессов, которые могут быть перечислены в psutil.process_iter().
В другом потоке уже есть пример: fooobar.com/info/87129/...