Los procesos pueden terminar de forma natural al finalizar su ejecución, pero también podemos hacer que finalice otro proceso del sistema, siempre con las limitaciones que nos ponga el sistema operativo.
Para eliminar un proceso usaremos el método kill(), que dependiendo del sistema operativo tendremos unas señales u otras:
La eliminación de un proceso es asíncrona, es decir podemos lanzar la señal de matar un proceso y luego en la siguiente línea todavía existir el proceso.
Para saber si un proceso ha terminado podemos usar poll(), el cual devolverá None si el proceso ha terminado.
import psutil
for proc in psutil.process_iter():
try:
# Obtener el nombre del proceso
nombreProceso = proc.name()
if proc.name() == "notepad.exe":
PID = proc.pid
print("Eliminando el proceso: ", nombreProceso , ' ::: ', PID)
proc.kill()
except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
print ("error")