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 命令。
二、子进程的控制
在子进程创建成功后,我们可以使用子进程对象的各种方法来控制子进程的行为。下面是一些常用的方法:
下面是一个示例代码,在子进程结束时获取输出结果并输出:
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.
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!