


Comment utiliser le module de sous-processus pour la gestion des sous-processus dans Python 3.x
Comment utiliser le module de sous-processus pour la gestion des sous-processus dans Python 3.x
Introduction :
Dans la programmation Python, nous devons souvent interagir avec des commandes ou des programmes externes, comme exécuter des commandes système, démarrer d'autres applications ou appeler d'autres scripts. La gestion des sous-processus fait référence aux opérations de création, de contrôle et de communication avec les sous-processus dans les programmes Python. Python fournit le module de sous-processus pour gérer la gestion des sous-processus, qui est un outil puissant et flexible. Cet article explique comment utiliser le module de sous-processus pour créer, contrôler et communiquer avec des sous-processus.
1. Création d'un sous-processus
Créer un sous-processus à l'aide du module subprocess est très simple. Vous pouvez créer un objet sous-processus en appelant directement le constructeur de la classe Popen. Voici un exemple de code simple :
import subprocess # 执行一个系统命令,输出结果到标准输出 subprocess.Popen(["ls", "-l"])
Dans cet exemple, nous utilisons la méthode constructeur de la classe Popen pour créer un objet de sous-processus. Le paramètre transmis est une liste, et le premier élément de la liste est la commande à exécuter. exécutée. Les éléments suivants sont les paramètres de la commande. Le code ci-dessus exécutera la commande système ls -l
et affichera les résultats sur la sortie standard. ls -l
,并将结果输出到标准输出。
除了上述的方式外,我们还可以通过在创建子进程对象时指定参数 shell=True
来执行 Shell 命令。示例代码如下:
import subprocess # 执行一个 Shell 命令 subprocess.Popen("ls -l", shell=True)
在上述代码中,我们将Shell命令 "ls -l"
作为参数传给 Popen 类的构造方法,并通过参数 shell=True
来执行 Shell 命令。
二、子进程的控制
在子进程创建成功后,我们可以使用子进程对象的各种方法来控制子进程的行为。下面是一些常用的方法:
- wait():等待子进程结束并返回状态码。
- communicate(input=None):与子进程进行交互,可以向子进程发送内容,也可以获取子进程的输出结果。
- poll():检查子进程是否结束,如果结束则返回进程的状态码,未结束则返回 None。
下面是一个示例代码,在子进程结束时获取输出结果并输出:
import subprocess # 执行一个系统命令,获取输出结果 p = subprocess.Popen(["ls", "-l"], stdout=subprocess.PIPE) output, error = p.communicate() print(output.decode("utf-8"))
在上述代码中,我们使用 communicate()
方法与子进程进行交互,获取子进程的输出结果并赋值给变量 output
。接着使用 decode("utf-8")
方法将二进制字符串转换为 UTF-8 编码的字符串,并打印输出。
三、子进程的通信
使用 communicate()
方法可以很方便地与子进程进行通信,不仅可以发送数据给子进程,还可以接收子进程的输出结果。下面是一个示例代码:
import subprocess # 执行一个命令并接收子进程的输出 p = subprocess.Popen(["ls", "-l"], stdout=subprocess.PIPE) output, error = p.communicate() print(output.decode("utf-8")) # 向子进程发送数据并接收输出结果 p = subprocess.Popen(["grep", "example"], stdout=subprocess.PIPE, stdin=subprocess.PIPE) input_data = "This is an example" output, error = p.communicate(input=input_data.encode("utf-8")) print(output.decode("utf-8"))
在上述代码中,我们首先创建一个子进程对象 p
,执行命令 ls -l
并将结果输出到 output
中。接着,我们再次创建一个子进程对象 p
,执行命令 grep example
并将 input_data
shell=True
lors de la création de l'objet sous-processus. L'exemple de code est le suivant : rrreee
Dans le code ci-dessus, nous passons la commande Shell "ls -l"
en paramètre au constructeur de la classe Popen, et passons le paramètre shell=True
pour exécuter les commandes Shell.
- wait() : Attendez la fin du processus enfant et renvoyez un code d'état.
- communiquer(input=None) : interagissez avec le processus enfant, vous pouvez envoyer du contenu au processus enfant et vous pouvez également obtenir les résultats de sortie du processus enfant.
- poll() : Vérifie si le processus enfant se termine. S'il se termine, il renvoie le code d'état du processus. S'il ne se termine pas, il renvoie Aucun.
communicate()
méthode avec le processus enfant Interagissez, obtenez la sortie du processus enfant et affectez-la à la variable output
. Utilisez ensuite la méthode decode("utf-8")
pour convertir la chaîne binaire en une chaîne codée en UTF-8 et imprimer le résultat. 🎜🎜3. Communication du sous-processus🎜L'utilisation de la méthode communicate()
peut facilement communiquer avec le sous-processus, elle peut non seulement envoyer des données au sous-processus, mais également recevoir les résultats de sortie. du sous-processus. Voici un exemple de code : 🎜rrreee🎜Dans le code ci-dessus, nous créons d'abord un objet de sous-processus p
, exécutons la commande ls -l
et envoyons le résultat dans sortie
. Ensuite, nous créons à nouveau un objet de sous-processus p
, exécutons la commande grep example
et envoyons input_data
au sous-processus. Enfin, nous imprimons les résultats. 🎜🎜Résumé :🎜En utilisant le module de sous-processus, nous pouvons facilement créer, contrôler et communiquer avec des sous-processus. Dans le processus de programmation réel, nous pouvons utiliser ces fonctions de manière flexible en fonction de besoins spécifiques pour réaliser des opérations de gestion de sous-processus plus complexes. J'espère que cet article vous a été utile pour utiliser le module de sous-processus pour la gestion des sous-processus en Python. 🎜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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds





Solution aux problèmes d'autorisation Lors de la visualisation de la version Python dans Linux Terminal Lorsque vous essayez d'afficher la version Python dans Linux Terminal, entrez Python ...

Comment enseigner les bases de la programmation novice en informatique dans les 10 heures? Si vous n'avez que 10 heures pour enseigner à l'informatique novice des connaissances en programmation, que choisissez-vous d'enseigner ...

Comment éviter d'être détecté lors de l'utilisation de FiddlereVerywhere pour les lectures d'homme dans le milieu lorsque vous utilisez FiddlereVerywhere ...

Lorsque vous utilisez la bibliothèque Pandas de Python, comment copier des colonnes entières entre deux frames de données avec différentes structures est un problème courant. Supposons que nous ayons deux dats ...

Comment Uvicorn écoute-t-il en permanence les demandes HTTP? Uvicorn est un serveur Web léger basé sur ASGI. L'une de ses fonctions principales est d'écouter les demandes HTTP et de procéder ...

Utilisation de Python dans Linux Terminal ...

Dans Python, comment créer dynamiquement un objet via une chaîne et appeler ses méthodes? Il s'agit d'une exigence de programmation courante, surtout si elle doit être configurée ou exécutée ...

Fastapi ...
