【问题标题】:Creating Process Dictionary创建过程字典
【发布时间】:2017-04-26 00:57:25
【问题描述】:

我的目标:我需要创建一个函数来检索每个进程的 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 将正常打印。我如何从这里调用那个字典?它甚至可以正确返回吗??

【问题讨论】:

    标签: python django dictionary psutil


    【解决方案1】:

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

    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()}
    

    【讨论】:

    • 谢谢,有道理。但我现在真正的问题是如何将结果格式化为我可以让 id 与名称相关联。这样我就可以填充 django 上的字段。我尝试做的每一件事都对我有错误
    • 您是否要创建一个以pids 作为键、names 作为值的字典?如果是,请查看我的更新。
    • 是的!我现在就试试!这是一堂课,甚至老师也对你的代码有多好印象深刻。说它“漂亮”。哈哈。任务是将数据发布到 Django 站点。所以我试图在我的 Django 模型中创建两个字段来获取这些值。
    猜你喜欢
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多