J'utilise Python 2.6. Parfois, plusieurs instances d'un certain processus s'ouvrent et ce processus pose en lui-même certains problèmes. Je veux pouvoir détecter par programme qu'il existe plusieurs instances de ce processus et les tuer.
Par exemple, dans certains cas, il peut y avoir 50 instances de make.exe ouvertes. Je veux pouvoir dire qu'il y a 20 cas ouverts et les tuer tous. Comment est-ce accompli?
Je pense que vous pourriez simplement utiliser taskkill et le Python os.system ()
import os
os.system("taskkill /im make.exe")
Remarque: je voudrais simplement noter que vous devrez peut-être qualifier pleinement le chemin d'accès aux tâches. J'utilise une box Linux donc je ne peux pas tester ...
Oui, vous pouvez le faire
import os
os.system("taskkill /f /im Your_Process_Name.exe")
Il existe une belle plateforme multiplateforme python utilitaire psutil qui expose une routine kill () sur un processus qui peut être répertorié avec psutil. process_iter ().
Il y a déjà un exemple dans l'autre thread: https://stackoverflow.com/a/4230226/4571444
Vous pouvez utiliser le TerminateProcess
de l'API win32 pour tuer un processus. Voir l'exemple suivant: http://code.activestate.com/recipes/347462-terminating-a-subprocess-on-windows/
Vous devez lui donner une poignée de processus. Si le processus est démarré à partir de votre code, le descripteur de processus est renvoyé par CreateProcess ou popen.
Si le processus a été lancé par autre chose, vous devez obtenir ce handle que vous pouvez utiliser EnumProcess ou WMI pour le récupérer.
Que diriez-vous de cela, je l'ai testé avec 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
appelez-le avec:
pkill("program_name")