在Python中检查进程是否存活

0 投票
1 回答
947 浏览
提问于 2025-04-18 16:27

我正在使用 psutil 这个库来判断一个程序是否在运行。

到目前为止,我写了以下代码:

PROCESS_NAME = 'python.exe'
for p in psutil.process_iter():
  if p.name == PROCESS_NAME:
    print("It's alive!")
    break

但是,这段代码似乎没有效果。

我在谷歌和这里查了很多资料,但每篇文章都说上面的代码是正确的。

除非我对 process_iter() 的用法有明显的误解……

1 个回答

1

错误的Python语法:

这一行是错的:

if p.name == "PROCESS_NAME":    # BAD

它在寻找一个名字确实叫做«PROCESS_NAME»的进程。其实,你应该寻找一个名字和变量PROCESS_NAME所指代的名字相同的进程,像这样:

if p.name == PROCESS_NAME:      # GOOD

第一行右边的部分是一个字符串字面量,也就是直接写出来的文字。而第二行右边的部分是一个变量的名字。

当然,如果你总是要找同一个名字,你可以把那个名字放在字符串字面量里:

if p.name == "python.exe":     # ALSO GOOD

新的PSUTIL API:

psutil的1.2.1版本和2版本之间,API发生了变化。在1版本中,p.name是进程的名字。而在2版本中,p.name变成了一个函数,它会返回一个字符串,这个字符串就是进程的名字。

所以,试试这个:

if p.name() == PROCESS_NAME:

撰写回答