HOWTO · Python

Comment tuer un processus Python

Apprenez à arrêter un processus Python avec Ctrl+C, un identifiant de processus vérifié ou des commandes de correspondance par nom.

Sur cette page

Pour arrêter un programme Python, appuyez d’abord sur CTRL+C dans le terminal ou l’IDE où il s’exécute. Si cela n’arrête pas le programme au premier plan, identifiez son identifiant de processus et utilisez kill pour un processus vérifié. N’utilisez killall ou pkill que lorsque vous avez l’intention de cibler tous les processus correspondants ; leur disponibilité et leurs règles de correspondance dépendent du système d’exploitation.

Tuer un processus Python à l’aide d’un raccourci clavier

Cliquez sur le terminal ou l’IDE qui exécute le programme et appuyez sur CTRL+C. Cela envoie une interruption au programme au premier plan. Python y répond généralement en levant KeyboardInterrupt et en s’arrêtant, mais un programme peut gérer l’interruption ou se trouver dans du code qui ne répond pas promptement. Enregistrez d’abord votre travail si le programme peut être en train d’écrire des fichiers ou de mettre à jour des données.

Si le programme continue, utilisez le terminal pour identifier son processus et choisissez une méthode en ligne de commande ci-dessous. Un processus peut aussi gérer ou différer un signal de terminaison ; la terminaison forcée est une escalade distincte et peut perdre du travail non enregistré.

Tuer un processus Python à l’aide du nom du processus et de la commande kill

La commande kill cible un identifiant de processus (PID), et non un nom de processus. Sous Linux, inspectez la liste des processus avec ps -eo pid,comm,args et trouvez la ligne dont la commande et les arguments identifient le programme Python que vous voulez arrêter. Ne copiez pas un PID depuis une ancienne capture d’écran et ne supposez pas que chaque ligne contenant « python » est la bonne cible. Les PID peuvent être réutilisés, alors vérifiez le candidat immédiatement avant d’envoyer un signal.

Dans Bash, cette petite vérification utilise le shell actuel comme processus connu et confirme que son PID est joignable :

pid=$$
if kill -0 "$pid" 2>/dev/null; then
    printf 'The selected PID is available.\n'
else
    printf 'The selected PID is unavailable.\n'
fi
The selected PID is available.

La vérification s’est exécutée avec succès et a affiché le message de disponibilité montré ci-dessus. kill -0 vérifie si un processus existe et si vous pouvez lui envoyer un signal ; il ne vérifie pas que le processus appartient à Python. Remplacez le PID du shell par un candidat que vous avez identifié et inspectez de nouveau la liste des processus avant d’agir.

Sur les systèmes de type Unix, kill PID envoie SIGTERM par défaut, ce qui demande au processus de se terminer et lui donne l’occasion de nettoyer. Par exemple, après avoir remplacé PID par le numéro vérifié, utilisez kill -TERM PID. Vérifiez de nouveau la liste des processus pour voir s’il s’est arrêté. S’il subsiste, déterminez pourquoi avant d’envisager un signal plus fort ; ne traitez pas kill -9 comme une première étape de routine.

Tuer un processus Python à l’aide du nom du processus et de la commande killall

killall sélectionne les processus par nom, donc un nom large comme python peut correspondre à plus que le seul script que vous vouliez arrêter. Passez en revue les correspondances à l’aide des outils de liste de processus disponibles sur votre système et restreignez le nom lorsque c’est possible. N’exécutez killall python que lorsque vous avez l’intention d’arrêter tous les processus correspondant à cette commande locale.

La commande n’est pas disponible partout, et les implémentations diffèrent d’un système de type Unix à l’autre. Consultez la page de manuel locale de killall avant de vous fier à sa correspondance par nom ou à ses options de signal. Sur certains systèmes, son comportement est différent de la commande Linux couramment utilisée pour terminer des processus.

Tuer un processus Python à l’aide du nom du processus et de la commande pkill

pkill sélectionne aussi les processus par nom et peut envoyer un signal à plusieurs correspondances. Son motif et ses options varient selon l’implémentation. Inspectez d’abord les processus candidats ; sur les systèmes qui le prennent en charge, pgrep -a python peut afficher les PID et les lignes de commande correspondants. Choisissez un motif plus spécifique ou un autre sélecteur pris en charge si la liste inclut des programmes sans rapport.

Lorsque les correspondances sont exactement les processus que vous voulez arrêter, pkill -TERM -f 'your-specific-script.py' envoie SIGTERM aux processus dont la ligne de commande complète correspond à ce motif, sur les implémentations prenant en charge -f. Traitez le motif comme un sélecteur, et non comme la garantie d’une correspondance unique, et consultez man pkill sur le système cible. Utilisez un PID avec kill lorsque vous devez cibler un seul processus vérifié.

Conclusion

Utilisez Ctrl+C pour un programme Python attaché à votre terminal, kill avec un identifiant de processus fraîchement vérifié pour un processus précis, et killall ou pkill uniquement lorsque toutes les correspondances par nom sélectionnées sont des cibles prévues. Consultez la documentation locale de la commande et confirmez le résultat. Un signal de terminaison demande à un processus de s’arrêter ; il ne garantit ni une terminaison immédiate ni la préservation du travail que le programme n’a pas enregistré.