Pregunta

Esto funciona perfectamente:

def find_processes():
    name = "ProcessName.exe"
    pid_list = psutil.get_pid_list()
    for pid in pid_list:
        try:
            if str(psutil.Process(pid).name()) == name:
                return True
        except:
            pass
    return False

Esto no:

def find_processes():
    name = "ProcessName.exe"
    pid_list = psutil.get_pid_list()
    for pid in pid_list:
        if str(psutil.Process(pid).name()) == name:
            return True
    return False

Sube un error: Acceso: (PID= 560) Estoy en un entorno de Windows y necesito acceder a todos los nombres de los procesos.Ya tengo un código de trabajo (el primero), por lo que mi pregunta es más por curiosidad.

¿Qué hacen los estados de cuenta de try / generacodiCode en el primer ejemplo, y por qué no funciona si los quito en el segundo?

¿Fue útil?

Solución

No toda la información de cada proceso estará disponible para usted a menos que sea el usuario / administrador de Root.Vea esta pregunta: Python Psutil en Windows le da acceso a denegado .

Estaría mejor cambiando su primer ejemplo para captar específicamente estos casos, con:

try:    
    if str(psutil.Process(pid).name()) == name:      
        return True    
except AccessDenied:    
    print "Unable to access PID:",pid

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top