2017-04-26 38 views
1

我的目标:我需要创建一个函数来检索每个进程的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 

如果您要分“返回”打印字典将打印罚款。如何从这里调用该字典?它是否正确返回?

回答

1

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

import psutil 

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

更新:

如果你想创建pid S作为键和name S作为值的字典,那就更简单了:

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

谢谢,这是有道理的。但现在我真正的问题是如何格式化结果,我可以只有与名称关联的ID。这样我就可以在django上填充字段。我曾试过的每一件事都是在我身上发生的错误 – Joe

+0

您是否正在尝试创建一个名为'pid'作为键和'name'作为值的字典?如果是,请参阅我的更新。 – Selcuk

+0

是的!我会立即尝试!这是一堂课,甚至老师也对代码的美好印象深刻。说这是'美丽'。哈哈。该任务是将数据发布到Django站点。所以我试图在我的Django模型中创建两个字段,它们将采用这些值。 – Joe