创建过程字典

时间:2017-04-26 00:57:26

标签: python django dictionary psutil

我的目标:我需要创建一个函数来检索每个进程的PID和名称,并将它们返回到字典中。我将把它上传到Django,真的需要两个不同的词典。 1表示每个正在运行的进程名称和PID,另一个表示所有已安装的名称和PID。到目前为止,我可以很好地打印字典,但不能正确返回。也许我说错了。我比较新。

import psutil
def pid_name():
    for proc in psutil.process_iter():
        try:
            pinfo = proc.as_dict(attrs=['pid', 'name'])
        except psutil.NoSuchProcess:
            pass
        else:
            return pinfo

如果您要“返回”进行打印,则dict将打印正常。如何从这里打电话给那个词典?它甚至正确地返回了吗?

1 个答案:

答案 0 :(得分:1)

您只返回第一个结果,因为您的return语句位于for块内。由于您无法创建具有重复键的字典,因此您应该返回字典列表。尝试使用列表推导来返回所有进程:

import psutil

def pid_name():
    return [proc.as_dict(attrs=['pid', 'name']) for proc in psutil.process_iter()]

<强>更新

如果您尝试创建一个字典,其中pid为键,name为值,则更容易:

def pid_name():
    return {proc.pid: proc.name() for proc in psutil.process_iter()}