我使用psutil来了解进程何时正在运行。
到目前为止,我有这段代码:
PROCESS_NAME = 'python.exe'
for p in psutil.process_iter():
if p.name == PROCESS_NAME:
print("It's alive!")
break
然而,它似乎无法发挥作用。
我在谷歌和这里四处看了看,但每个帖子都表明上面的代码是正确的。
除非我明白误解了process_iter()如何运作....
答案 0 :(得分:1)
这一行错了:
if p.name == "PROCESS_NAME": # BAD
它会查找一个名称为“PROCESS_NAME”的进程。相反,您希望查找名称与变量PROCESS_NAME引用的名称相同的进程,如下所示:
if p.name == PROCESS_NAME: # GOOD
第一行的右侧是字符串文字。第二个的右边是变量的名称。
当然,如果您总是要查找相同的名称,可以将那个名称放在字符串文字中:
if p.name == "python.exe": # ALSO GOOD
在版本1.2.1和psutil
的版本2之间,他们更改了api。在版本1中,p.name
是进程的名称。在版本2中,p.name
是一个函数,它返回一个字符串,该字符串是进程的名称。
所以,试试这个:
if p.name() == PROCESS_NAME: