在Python中监控进程?

5 投票
3 回答
18027 浏览
提问于 2025-04-16 01:03

我觉得这个问题挺基础的,但还是想问一下。

我需要写一个Python脚本,用来检查一个程序,比如说notepad.exe,是否正在运行。如果这个程序正在运行,就什么都不做。如果没有运行,就启动它。请问该怎么做呢?

我在Windows XP上使用Python 2.6。

3 个回答

15

在Python 2.6及之后的版本中,os模块中的进程创建功能已经不再推荐使用了,现在大家更倾向于使用subprocess模块。

if 'notepad.exe' not in subprocess.Popen('tasklist', stdout=subprocess.PIPE).communicate()[0]:
    subprocess.Popen('notepad.exe')

需要注意的是,在Python 3中,检查的字符串需要是字节对象,所以应该是这样的:

if b'notepad.exe' not in [blah]:
    subprocess.Popen('notepad.exe')

(要启动的文件或进程的名称不需要是字节对象。)

4

有几个选择,

1: 最简单但也比较粗糙的方法就是对以下内容进行一些文本处理:

os.popen('tasklist').read()

2: 另一个更复杂的选择是使用pywin32,并研究win32的API,找出当前正在运行的进程。

3: 还有WMI(我刚刚找到这个),这里有一个vbscript的例子

撰写回答