¿Es posible matar un proceso en Windows desde Python?

Estoy usando Python 2.6 . A veces se abren varias instancias de un cierto proceso, y ese proceso causa algunos problemas en sí mismo. Quiero poder detectar programáticamente que hay múltiples instancias de ese proceso y matarlos.

Por ejemplo, tal vez en algunos casos haya 50 instancias de make.exe abiertas. Quiero poder decir que hay 20 instancias abiertas y matarlos a todos. ¿Cómo se logra esto?

Pensaría que podrías usar taskkill y Python os.system ()

 import os os.system("taskkill /im make.exe") 

Nota: me gustaría señalar que es posible que tenga que calificar completamente la ruta de taskkill. Estoy usando una caja de Linux, así que no puedo probar …

Sí, tú puedes hacerlo

 import os os.system("taskkill /f /im Your_Process_Name.exe") 
  1. / f: Especifica que los procesos se terminen por la fuerza.
  2. / im (ImageName): especifica el nombre de la imagen del proceso que se va a terminar.
  3. Para más información sobre TaskKill

Existe una utilidad psutil de Python multiplataforma que expone una rutina kill () en procesos que pueden enumerarse con psutil.process_iter ().

Ya hay un ejemplo en el otro hilo: https://stackoverflow.com/a/4230226/4571444

Puedes usar el TerminateProcess de la api de win32 para finalizar un proceso. Vea el siguiente ejemplo: http://code.activestate.com/recipes/347462-terminating-a-subprocess-on-windows/

Necesitas darle un identificador de proceso. Si el proceso se inicia desde su código, el controlador de procesos lo devuelve CreateProcess o popen.

Si el proceso se inició por algo más, necesita obtener este identificador, puede usar EnumProcess o WMI para recuperarlo.

¿Qué tal esto, lo probé con ActiveState Python 2.7:

 import sys, traceback, os def pkill (process_name): try: killed = os.system('tskill ' + process_name) except Exception, e: killed = 0 return killed 

llámalo con:

 pkill("program_name")