试图找出Python中的进程是否存在

时间:2014-08-07 18:55:04

标签: python psutil

我使用psutil来了解进程何时正在运行。

到目前为止,我有这段代码:

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

然而,它似乎无法发挥作用。

我在谷歌和这里四处看了看,但每个帖子都表明上面的代码是正确的。

除非我明白误解了process_iter()如何运作....

1 个答案:

答案 0 :(得分:1)

Bad 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:

在版本1.2.1和psutil的版本2之间,他们更改了api。在版本1中,p.name是进程的名称。在版本2中,p.name是一个函数,它返回一个字符串,该字符串是进程的名称。

所以,试试这个:

if p.name() == PROCESS_NAME: