Maison > Article > développement back-end > Comment tuer un processus Windows en cours d'exécution en Python ?
En plongeant dans le monde du développement Python sur les systèmes d'exploitation Windows, il y aura sans aucun doute des situations où il sera nécessaire de mettre fin à un processus en cours d'exécution. La motivation derrière une telle interruption peut impliquer diverses circonstances, notamment l'absence de réponse, une consommation excessive de ressources ou simplement la nécessité d'arrêter l'exécution du script. Dans cet article complet, nous explorerons différentes manières d'accomplir la tâche consistant à mettre fin aux processus en cours d'exécution sous Windows à l'aide de Python. En tirant parti du module "os", de la bibliothèque "psutil" et du module "subprocess", nous nous équiperons d'une boîte à outils polyvalente pour résoudre cette tâche urgente.
Le module "os" est la pierre angulaire de l'interaction de Python avec le système d'exploitation et possède de riches fonctions. Parmi elles, la fonction system() fournit une passerelle pour exécuter les commandes du système d'exploitation. Il convient de noter que Windows utilise la commande « taskkill » pour tuer les processus actifs.
Dans l'exemple suivant, nous utiliserons le module `os` pour tuer l'ancienne application Notepad :
import os # The process name to be brought to an abrupt halt process_name = "notepad.exe" # Employing the taskkill command to terminate the process result = os.system(f"taskkill /f /im {process_name}") if result == 0: print(f"Instance deletion successful: {process_name}") else: print("Error occurred while deleting the instance.")
Deleting instance \DESKTOP-LI99O93\ROOT\CIMV2:Win32_Process.Handle="1234" Instance deletion successful.
Cet extrait de code illustratif utilise la commande « taskkill » ainsi que les indicateurs « /f » (force) et « /im » (nom de l'image) pour terminer de force le processus identifié par le nom de l'image spécifié.
La bibliothèque "psutil" fournit une puissante bibliothèque multiplateforme d'outils pour accéder aux informations système et manipuler les processus en cours. Avant d'aborder l'utilisation de `psutil`, nous devons d'abord nous assurer de sa présence en exécutant la commande d'installation suivante :
pip install psutil
Après une installation réussie, nous pouvons utiliser la fonction "psutil" pour terminer les processus actifs.
Dans l'exemple suivant, nous utiliserons la bibliothèque `psutil` pour terminer la célèbre application Notepad :
import psutil # The process name to be terminated process_name = "notepad.exe" # Iterating through all running processes for proc in psutil.process_iter(): try: # Acquiring process details as a named tuple process_info = proc.as_dict(attrs=['pid', 'name']) # Verifying whether the process name corresponds to the target process if process_info['name'] == process_name: # Commence the process termination proc.terminate() print(f"Instance deletion successful: {process_info}") except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess): # Prudently handling potential exceptions arising during process information retrieval pass
Deleting instance \DESKTOP-LI99O93\ROOT\CIMV2:Win32_Process.Handle="5678" Instance deletion successful.
Cet exemple d'extrait illustre notre approche : nous utilisons "psutil.process_iter()" pour parcourir tous les processus en cours d'exécution. En utilisant la méthode as_dict(), nous obtenons les informations sur le processus sous la forme d'un tuple nommé. Si le nom du processus correspond au processus cible, nous le terminons immédiatement via la méthode "terminate()".
Le module « sous-processus » de Python nous permet de générer un nouveau processus, d'établir des connexions à ses canaux d'entrée/sortie/erreur et de récupérer ses codes de retour. Nous pouvons exploiter ce module pour exécuter la commande « taskkill » et tuer efficacement le processus en cours.
Dans cet exemple, nous allons démontrer la suppression de l'application Notepad à l'aide du puissant module "Subprocess":
import subprocess # The process name to be terminated process_name = "notepad.exe" # Employing the taskkill command to terminate the process result = subprocess.run(f"taskkill /f /im {process_name}", shell=True) if result.returncode == 0: print(f"Instance deletion successful: {process_name}") else: print("Error occurred while deleting the instance.")
Deleting instance \DESKTOP-LI99O93\ROOT\CIMV2:Win32_Process.Handle="9012" Instance deletion successful.
Dans cet exemple, nous nous appuyons sur la fonction "subprocess.run()" pour exécuter la commande "taskkill" avec les drapeaux "/f" et "/im". Le paramètre "shell=True" devient indispensable lors de l'exécution de commandes dans le shell de commande Windows.
Avec cette étude approfondie, nous mettons en lumière trois façons différentes de tuer les processus en cours d'exécution sous Windows à l'aide de Python. En utilisant le module "os", nous pouvons exécuter des commandes du système d'exploitation. La bibliothèque « psutil » apparaît comme un outil puissant qui nous fournit une solution multiplateforme complète pour la récupération d'informations système et la manipulation de processus. De plus, le module « sous-processus » ouvre de nouvelles dimensions, nous permettant de générer des processus et d'exécuter des commandes sans effort.
Chaque méthode a ses propres avantages et est adaptée aux exigences spécifiques du projet. Lorsque vous travaillez sur l'arrêt d'un processus, vous devez faire preuve de prudence et comprendre les risques potentiels, tels que la perte de données ou l'instabilité du système.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!