Mi objetivo: necesito crear una función que recupere el PID y el nombre de cada proceso y los devuelva en un diccionario. Subiré esto a Django y realmente necesito dos diccionarios diferentes. 1 con cada nombre de proceso y PID en ejecución y otro con todos los nombres y PID instalados. Hasta ahora puedo conseguir que imprima bien el diccionario pero no lo devuelva correctamente. Tal vez lo estoy llamando mal. soy mas nuevo en esto
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 pinfoSi tuviera que sub "regresar" para imprimir, el dictado se imprimirá bien. ¿Cómo llamo a ese dict desde aquí? ¿Está incluso volviendo correctamente?
Está devolviendo solo el primer resultado porque su declaración de devolución está dentro del bloque for . Dado que no puede crear un diccionario con claves duplicadas, debe devolver una lista de diccionarios en su lugar. Pruebe una lista de comprensión para devolver todos los procesos:
import psutil def pid_name(): return [proc.as_dict(attrs=['pid', 'name']) for proc in psutil.process_iter()]Actualizar:
Si está intentando crear un diccionario con pid s como claves y name s como valores, es aún más fácil:
def pid_name(): return {proc.pid: proc.name() for proc in psutil.process_iter()}