下面的示例代码检索所有正在运行的过程并打印它们。他们是按照此处的第三个示例和此处的最后一个示例编写的。问题是我无法弄清楚为什么只有第一个检索按需要排序的进程。
我认为这与lambda
功能构造有关。但是正确运行的示例,第一个示例,似乎将p
for 语句的局部变量与p.dict
字典混合在一起,让我卡住了。
第一个样本:
import psutil
procs = []
for p in psutil.process_iter():
try:
p.dict = p.as_dict(['pid', 'name'])
except psutil.NoSuchProcess:
pass
else:
procs.append(p)
processes = sorted(procs, key=lambda p: p.dict['name'], reverse=False)
print(processes)
第二个样本:
import psutil
procs = []
for proc in psutil.process_iter():
try:
procs_dic = proc.as_dict(['pid', 'name'])
except psutil.NoSuchProcess:
pass
else:
procs.append(proc)
processes = sorted(procs, key=lambda ordem: procs_dic['name'], reverse=False)
print(processes)