2017-04-26 57 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