创建进程字典

Creating Process Dictionary

我的目标:我需要创建一个函数来检索每个进程的 PID 和名称,并将它们 return 放入字典中。我将把它上传到 Django 并且真的需要两个不同的词典。 1 包含每个 运行 进程名称和 PID,另一个包含所有已安装的名称和 PID。到目前为止,我可以让它很好地打印字典,但不能正确打印 return。也许我叫错了。我对此比较陌生。

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

如果您将子 "return" 用于打印,则 dict 可以正常打印。我如何从这里调用该命令?它甚至 return 正确吗?

您只 return 获取第一个结果,因为您的 return 语句在 for 块内。由于您不能创建具有重复键的字典,因此您应该 return 一个字典列表。尝试对 return 所有进程进行列表理解:

import psutil

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

更新:

如果您尝试创建一个以 pids 作为键并以 names 作为值的字典,则更容易:

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