/ / Creating Process Dictionary - python, django, słownik, psutil

Tworzenie słownika procesowego - python, django, słownik, psutil

Mój cel: Muszę utworzyć funkcję, która pobierze PID i nazwę każdego procesu i zwróci je w słowniku. Będę przesyłał to do Django i naprawdę potrzebuję dwóch różnych słowników. 1 z każdą uruchomioną nazwą procesu i PID, a drugi ze wszystkimi zainstalowanymi nazwami i PID. Do tej pory mogę go dobrze wydrukować, ale nie zwraca poprawnie. Może nazywam to źle. Jestem od tego nowszy.

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

Jeśli chcesz napisać „wróć” do drukowania, dykt wydrukuje się dobrze. Jak mogę stąd nazwać ten dykt? Czy to wróci poprawnie?

Odpowiedzi:

1 dla odpowiedzi № 1

Zwracany jest tylko pierwszy wynik, ponieważ instrukcja return znajduje się w for blok. Ponieważ nie możesz utworzyć słownika ze zduplikowanymi kluczami, powinieneś zamiast tego zwrócić listę słowników. Spróbuj zrozumieć listę, aby zwrócić wszystkie procesy:

import psutil

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

Aktualizacja:

Jeśli próbujesz utworzyć słownik za pomocą pids jako klucze i namejako wartości, jest jeszcze łatwiej:

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