0

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

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

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

但是,它似乎不起作用。

我在 google 和 here 上环顾四周,但每篇文章都表明上面的代码是正确的。

除非我明显误解了 process_iter() 的工作原理......

4

1 回答 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:

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

所以,试试这个:

if p.name() == PROCESS_NAME:
于 2014-08-07T19:05:59.617 回答