我的目标:我需要创建一个函数来检索每个进程的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将打印正常。如何从这里打电话给那个词典?它甚至正确地返回了吗?
答案 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()}