Maison > Article > développement back-end > Comment utiliser le module de sous-processus pour la gestion des sous-processus dans Python 2.x
Comment utiliser le module de sous-processus pour la gestion des sous-processus dans Python 2.x
Présentation :
Dans le développement Python, nous devons parfois appeler d'autres commandes ou programmes externes dans le programme. Le module de sous-processus est une bibliothèque standard fournie par Python, qui peut facilement créer et communiquer avec des sous-processus. Cet article présentera comment utiliser le module de sous-processus pour la gestion des sous-processus et l'illustrera avec des exemples de code.
subprocess.Popen()
, qui peut démarrer un nouveau processus et renvoyer un objet Popen. La syntaxe de base pour utiliser la fonction Popen()
pour créer un sous-processus est la suivante : subprocess.Popen()
,它能够启动一个新进程并返回一个Popen对象。使用Popen()
函数创建子进程的基本语法如下:import subprocess subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)
参数说明:
示例代码1:启动一个子进程并执行命令,然后获取子进程的输出结果。
import subprocess cmd = "ls -l" p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) output, _ = p.communicate() print(output)
Popen()
函数的stdin、stdout、stderr参数来指定子进程的输入输出。如果不指定这些参数,默认会创建一个新的管道并通过Popen对象的属性来读写。示例代码2:启动一个子进程并通过管道进行输入、输出。
import subprocess cmd = "grep -E 'a|b|c'" p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE) input_data = "abcdefg hijklmnop qrstuvwxyz " output, _ = p.communicate(input_data) print(output)
示例代码3:启动一个子进程并重定向输出到文件中。
import subprocess cmd = "grep -E 'a|b|c' input.txt > output.txt" subprocess.Popen(cmd, shell=True)
Popen()
函数会立即返回一个Popen对象,而不会等待子进程执行完毕。如果我们需要等待子进程执行完毕后再进行下一步操作,可以使用Popen()
对象的wait()
方法。示例代码4:启动一个子进程并等待其执行完毕。
import subprocess cmd = "ls -l" p = subprocess.Popen(cmd, shell=True) p.wait() print("子进程执行完毕")
Popen()
对象的returncode
import subprocess cmd = "ls -l" p = subprocess.Popen(cmd, shell=True) p.wait() if p.returncode == 0: print("子进程执行成功") else: print("子进程执行失败")
bufsize : Contrôlez les paramètres d'entrée et de sortie de la taille du tampon, 0 signifie pas de mise en mémoire tampon, 1 signifie mise en mémoire tampon de ligne, d'autres nombres positifs représentent la taille du tampon
exécutable : le chemin d'accès au fichier exécutable, le chemin de recherche dans la variable d'environnement système PATH est utilisé par défaut
🎜stdin : le standard du flux d'entrée du processus enfant, la valeur par défaut est PIPE, qui est entré via l'attribut stdin de l'objet Popen 🎜🎜stdout : le flux de sortie standard du processus enfant, qui est par défaut PIPE, qui est généré via l'attribut stdout de l'objet Popen. 🎜🎜stderr : le flux d'erreurs standard du processus enfant. La valeur par défaut est PIPE, qui est généré via l'attribut stderr de l'objet Popen. 🎜🎜preexec_fn : un objet exécutable qui est généré via l'attribut stdout de l'objet Popen. sera appelé avant le démarrage du processus enfant 🎜🎜close_fds : s'il faut fermer les descripteurs de fichiers qui ne sont plus nécessaires, la valeur par défaut est False🎜🎜 shell : s'il faut effectuer une analyse des commandes via le shell, la valeur par défaut est False🎜🎜cwd : le processus de travail répertoire, la valeur par défaut est Aucune🎜🎜env : la variable d'environnement, la valeur par défaut est Aucune, c'est-à-dire que la variable d'environnement du processus parent est utilisée🎜🎜universal_newlines : contrôle si l'entrée et la sortie sont converties en mode Texte, la valeur par défaut est False 🎜🎜startupinfo : les informations de démarrage du processus enfant, la valeur par défaut est Aucune🎜🎜creationflags : l'indicateur de création du processus enfant, la valeur par défaut est 0🎜Popen() Fonction
Entrée et sortie. Si ces paramètres ne sont pas spécifiés, un nouveau tube sera créé par défaut et lu et écrit via les propriétés de l'objet Popen. 🎜🎜🎜Exemple de code 2 : démarrez un processus enfant et effectuez des entrées et des sorties via des tuyaux. 🎜rrreee🎜Exemple de code 3 : démarrez un sous-processus et redirigez la sortie vers un fichier. 🎜rrreeePopen()
renverra un Popen. objet immédiatement au lieu d'attendre que le processus enfant termine son exécution. Si nous devons attendre la fin de l'exécution du processus enfant avant de passer à l'étape suivante, nous pouvons utiliser la méthode wait()
de l'objet Popen()
. 🎜🎜🎜Exemple de code 4 : démarrez un processus enfant et attendez la fin de son exécution. 🎜rrreeereturncode
de l'objet Popen()
pour obtenir le code d'état de sortie du processus enfant. S'il vaut 0, cela signifie que l'exécution a réussi. 🎜🎜🎜Exemple de code 5 : obtenez le code d'état de sortie du processus enfant. 🎜rrreee🎜Résumé : 🎜Grâce au module de sous-processus, nous pouvons facilement créer des sous-processus et gérer des processus dans des programmes Python. Les méthodes opérationnelles spécifiques incluent la création d'un processus enfant, le contrôle des entrées et des sorties du processus enfant, l'attente de la fin du processus enfant et la capture du code d'état de sortie du processus enfant. La maîtrise de ces connaissances permet de mieux utiliser Python pour la gestion des sous-processus et d'améliorer la flexibilité et l'évolutivité du programme. 🎜🎜Ce qui précède est le contenu pertinent sur l'utilisation du module de sous-processus pour la gestion des sous-processus dans Python 2.x. J'espère que cela aide. 🎜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!