在Python中检查进程是否存活
我正在使用 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: