【发布时间】:2010-01-18 05:46:32
【问题描述】:
我需要一个脚本来检查特定进程是否正在运行,如果未找到则返回某些内容。我知道这可以使用子进程来完成,但是有没有更简单的方法呢?
【问题讨论】:
我需要一个脚本来检查特定进程是否正在运行,如果未找到则返回某些内容。我知道这可以使用子进程来完成,但是有没有更简单的方法呢?
【问题讨论】:
在 Windows 上,您可以使用 WMI:
import win32com.client
def find_process(name):
objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
objSWbemServices = objWMIService.ConnectServer(".", "root\cimv2")
colItems = objSWbemServices.ExecQuery(
"Select * from Win32_Process where Caption = '{0}'".format(name))
return len(colItems)
print find_process("SciTE.exe")
【讨论】:
Select 语句可以让您在Caption 上进行预过滤时,为什么还要检索整个进程列表?像这样:"Select * from Win32_Process where Caption = 'SciTE.exe'"
出于类似目的,我使用了psutil 库。一些提示:
psutil.pids() (reference) 列出进程process = psutil.Process(pid) (reference) 检查进程信息process.kill或process.terminate()
Windows 上的Installation - pip 将从源代码进行安装(这意味着编译),因此您可能希望从 https://pypi.python.org/pypi/psutil/#downloads 下载二进制安装。
【讨论】: