python psutil 显示 procname 的结果?

python psutil show result of procname?

如果我使用 procname 然后 运行 psutil 作为 shell 命令,我会看到进程名称的变化。但是,如果我使用 python psutil 模块,则不会显示更改。 (见下面的代码)。

http://psutil.readthedocs.io/en/latest/#processes 看来,进程以某种方式被缓存。不过,它还说,它们在第一次调用时被缓存,在这种情况下 "ought to" 下面的代码可以工作,是吗?如果问题出在预缓存上,是否有办法告诉 psutil 刷新其缓存?

我知道我可以捕获 os.system 调用的输出并将其解析为手工制作的进程名称,但我希望我可以利用 psutil 的功能。

import procname
import psutil
import os

procname.setprocname('xyzzzyzyz')

os.system('ps aux | grep xyzzzyzyz')
c = 0
X = psutil.process_iter(attrs=['name'])
for x in X:
    c+=1
    if x.name() in [ 'xyzzzyzyz', 'python']:
        print x
print c

for proc in psutil.process_iter():
     try:
         pinfo = proc.as_dict(attrs=['pid', 'name', 'username'])
     except psutil.NoSuchProcess:
         pass
     else:
         if pinfo['name'] in ['xyzzzyzyz', 'python']:
             print pinfo

psutil 作者在这里。不,目前无法刷新 Process() 个实例。似乎应该有,因为您的用例确实是合法的。我将添加一个 Process.refresh() 方法来使缓存失效。