Maison >développement back-end >Tutoriel Python >Comment détacher les processus d'arrière-plan à l'aide du module « subprocess » de Python ?

Comment détacher les processus d'arrière-plan à l'aide du module « subprocess » de Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-16 08:42:11873parcourir

How to Detach Background Processes Using Python's `subprocess` Module?

Comment démarrer un processus d'arrière-plan détaché en Python

Lors de la conversion d'un script shell en Python, vous pouvez rencontrer le besoin de démarrer des processus dans l'arrière-plan qui persiste même une fois le script terminé. Pour y parvenir, vous pouvez utiliser le module subprocess de Python.

Utilisation de subprocess.Popen

La fonction subprocess.Popen vous permet de générer un nouveau processus. Pour démarrer un processus en arrière-plan et le détacher du processus parent, transmettez les arguments shell=True et stderr=subprocess.STDOUT à subprocess.Popen :

import subprocess
subprocess.Popen(["command", "arg1", "arg2"], shell=True, stderr=subprocess.STDOUT)

Utiliser la fourchette() Fonction

Une autre option consiste à utiliser la fonction fork() pour créer un processus enfant qui s'exécute en même temps que le processus parent. Cependant, cette méthode est plus avancée et nécessite une gestion minutieuse des signaux et des ressources.

Éviter le blocage

Pour empêcher le processus parent de se bloquer en attendant que le processus enfant complet, évitez d'appeler la méthode communicate() sur l'objet processus renvoyé par Popen.

Exemple

Pour démarrer un processus qui exécute sleep 30 en arrière-plan, utilisez le suivant :

import subprocess
subprocess.Popen(["sleep", "30"])

Clarification

Dans ce contexte, « arrière-plan » fait référence au démarrage d'un processus qui s'exécute indépendamment du processus parent, qu'il soit démarré ou non dans un fond de coquillage.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn