是否有可能从Python中杀死Windows上的进程?

时间:2011-06-08 12:42:25

标签: python windows windows-xp

我正在使用 Python 2.6 。有时某个过程会打开几个实例,而这个过程本身就会产生一些问题。我希望能够以编程方式检测到该进程有多个实例并将其杀死。

例如,在某些情况下可能会打开50个make.exe实例。我希望能够告诉你有20个实例打开,并将它们全部杀掉。这是如何完成的?

6 个答案:

答案 0 :(得分:43)

我认为您可以使用taskkill和Python os.system()

import os
os.system("taskkill /im make.exe")

注意:我会注意到您可能必须完全限定taskkill路径。我正在使用Linux盒子,所以我无法测试......

答案 1 :(得分:9)

是的,你可以做到

{"result":"error","error":{"message":"Bad value","name":"Exception","fileName":"script","lineNumber":49,"stack":"\tat script:49 (handleResponse)\n\tat script:32 (doGet)\n"}}
  1. / f:指定强制终止进程。
  2. / im(ImageName):指定进程的映像名称 终止。
  3. For more info regarding TaskKill

答案 2 :(得分:4)

有一个很好的跨平台python实用程序psutil,可以在可以使用psutil.process_iter()列出的进程上公开kill()例程。

另一个帖子中已有一个例子:https://stackoverflow.com/a/4230226/4571444

答案 3 :(得分:3)

您可以使用win32 api的TerminateProcess来终止进程。请参阅以下示例:http://code.activestate.com/recipes/347462-terminating-a-subprocess-on-windows/

你需要给它一个处理句柄。如果从您的代码启动进程,则CreateProcess或popen将返回进程句柄。

如果该过程是由其他内容启动的,则需要获取此句柄,您可以使用EnumProcessWMI来检索它。

答案 4 :(得分:2)

这个怎么样,我用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")

答案 5 :(得分:1)

我认为代码是这样的:

def killer(process_name):
    subprocess('taskkill /IM ' + process_name + ' /F')

killer('chrome.exe')