Maison développement back-end Tutoriel Python 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

Jul 30, 2023 am 10:07 AM
python x subprocess模块 子进程管理

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.

  1. Créer un sous-processus :
    La fonction la plus couramment utilisée dans le module de sous-processus est 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)
Copier après la connexion

参数说明:

  • args: 字符串或者序列类型的命令行参数
  • bufsize: 控制输入输出缓冲大小的参数,0代表不缓冲,1代表行缓冲,其他正数代表缓冲区大小
  • executable: 可执行文件的路径,默认使用系统PATH环境变量中的搜索路径
  • stdin: 子进程的标准输入流,默认为PIPE,即通过Popen对象的stdin属性进行输入
  • stdout: 子进程的标准输出流,默认为PIPE,即通过Popen对象的stdout属性进行输出
  • stderr: 子进程的标准错误流,默认为PIPE,即通过Popen对象的stderr属性进行输出
  • preexec_fn: 一个将在子进程启动之前被调用的可执行对象
  • close_fds: 是否关闭不再需要的文件描述符,默认为False
  • shell: 是否通过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)
Copier après la connexion
  1. 子进程的输入输出:
    在创建子进程时,我们可以通过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)
Copier après la connexion

示例代码3:启动一个子进程并重定向输出到文件中。

import subprocess

cmd = "grep -E 'a|b|c' input.txt > output.txt"
subprocess.Popen(cmd, shell=True)
Copier après la connexion
  1. 等待子进程结束:
    子进程的执行是异步的,默认情况下,Popen()函数会立即返回一个Popen对象,而不会等待子进程执行完毕。如果我们需要等待子进程执行完毕后再进行下一步操作,可以使用Popen()对象的wait()方法。

示例代码4:启动一个子进程并等待其执行完毕。

import subprocess

cmd = "ls -l"
p = subprocess.Popen(cmd, shell=True)
p.wait()
print("子进程执行完毕")
Copier après la connexion
  1. 捕获子进程的退出状态码:
    每个子进程都会有一个退出状态码,代表其执行结果。可以使用Popen()对象的returncode
  2. import subprocess
    
    cmd = "ls -l"
    p = subprocess.Popen(cmd, shell=True)
    p.wait()
    if p.returncode == 0:
        print("子进程执行成功")
    else:
        print("子进程执行失败")
    Copier après la connexion
    Description du paramètre :

      args : paramètres de ligne de commande de type chaîne ou séquence


      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🎜
    🎜Exemple de code 1 : démarrez un processus enfant et exécutez la commande , Ensuite, récupérez le résultat du processus enfant. 🎜rrreee
      🎜Entrée et sortie du sous-processus : 🎜Lors de la création d'un sous-processus, nous pouvons spécifier le sous-processus via les paramètres stdin, stdout et stderr du 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. 🎜rrreee
        🎜Attendez la fin du sous-processus : 🎜L'exécution du sous-processus est asynchrone Par défaut, la fonction Popen() 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. 🎜rrreee
          🎜Capturez le code d'état de sortie du processus enfant : 🎜Chaque processus enfant aura un code d'état de sortie, représentant son résultat d'exécution. Vous pouvez utiliser l'attribut returncode 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!

Déclaration de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment utiliser le module mathématique pour effectuer des opérations mathématiques dans Python 3.x Comment utiliser le module mathématique pour effectuer des opérations mathématiques dans Python 3.x Aug 01, 2023 pm 03:15 PM

Comment utiliser le module mathématique pour effectuer des opérations mathématiques dans Python 3.x Introduction : Dans la programmation Python, effectuer des opérations mathématiques est une exigence courante. Afin de faciliter le traitement des opérations mathématiques, Python fournit la bibliothèque mathématique, qui contient de nombreuses fonctions et constantes pour les calculs mathématiques et les fonctions mathématiques. Cet article explique comment utiliser le module mathématique pour effectuer des opérations mathématiques courantes et fournit des exemples de code correspondants. 1. L'ajout d'opérations mathématiques de base est effectué à l'aide de la fonction math.add() dans le module mathématique.

Comment utiliser la fonction urllib.parse.unquote() pour décoder les URL en Python 3.x Comment utiliser la fonction urllib.parse.unquote() pour décoder les URL en Python 3.x Aug 02, 2023 pm 02:25 PM

Comment utiliser la fonction urllib.parse.unquote() pour décoder les URL dans Python3.x Dans la bibliothèque urllib de Python, le module urllib.parse fournit une série de fonctions d'outils pour l'encodage et le décodage d'URL, parmi lesquelles urllib.parse.unquote(. ) Les fonctions peuvent être utilisées pour décoder les URL. Cet article explique comment utiliser urllib.parse.un.

Comment utiliser la fonction join() dans Python 2.x pour fusionner une liste de chaînes en une seule chaîne Comment utiliser la fonction join() dans Python 2.x pour fusionner une liste de chaînes en une seule chaîne Jul 30, 2023 am 08:36 AM

Comment utiliser la fonction join() dans Python2.x pour fusionner une liste de chaînes en une seule chaîne. En Python, nous devons souvent fusionner plusieurs chaînes en une seule chaîne. Python propose diverses façons d'atteindre cet objectif, l'une des méthodes les plus courantes consiste à utiliser la fonction join(). La fonction join() peut concaténer une liste de chaînes en une chaîne et spécifier le délimiteur lors de la concaténation. La syntaxe de base pour utiliser la fonction join() est la suivante : &

Comment utiliser la correspondance de modèles pour la correspondance de modèles de type dans Java 14 Comment utiliser la correspondance de modèles pour la correspondance de modèles de type dans Java 14 Jul 31, 2023 pm 12:01 PM

Comment utiliser PatternMatching pour la correspondance de modèles de type dans Java14 Introduction : Java14 introduit une nouvelle fonctionnalité, PatternMatching, qui est un outil puissant qui peut être utilisé pour la correspondance de modèles de type au moment de la compilation. Cet article explique comment utiliser PatternMatching pour la correspondance de modèles de type dans Java14 et fournit des exemples de code. Comprendre le concept de PatternMatchingPattern

Comment utiliser le module os pour exécuter des commandes système dans Python 3.x Comment utiliser le module os pour exécuter des commandes système dans Python 3.x Jul 31, 2023 pm 12:19 PM

Comment utiliser le module os pour exécuter des commandes système dans Python3.x Dans la bibliothèque standard de Python3.x, le module os fournit une série de méthodes pour exécuter des commandes système. Dans cet article, nous apprendrons comment utiliser le module os pour exécuter des commandes système et donnerons des exemples de code correspondants. Le module os en Python est une interface permettant d'interagir avec le système d'exploitation. Il fournit des méthodes telles que l'exécution de commandes système, l'accès aux fichiers et répertoires, etc. Voici quelques méthodes de module OS couramment utilisées, qui peuvent être utilisées pour exécuter des commandes système.

Comment utiliser la fonction write() pour écrire du contenu dans un fichier en Python 2.x Comment utiliser la fonction write() pour écrire du contenu dans un fichier en Python 2.x Jul 30, 2023 am 08:37 AM

Comment utiliser la fonction write() pour écrire du contenu dans un fichier dans Python2.x Dans Python2.x, nous pouvons utiliser la fonction write() pour écrire du contenu dans un fichier. La fonction write() est l'une des méthodes de l'objet fichier et peut être utilisée pour écrire des données chaîne ou binaires dans le fichier. Dans cet article, j'expliquerai en détail comment utiliser la fonction write() et quelques cas d'utilisation courants. Ouvrir le fichier Avant d'écrire dans le fichier à l'aide de la fonction write(), je

Comment utiliser la fonction urllib.quote() pour encoder des URL en Python 2.x Comment utiliser la fonction urllib.quote() pour encoder des URL en Python 2.x Jul 31, 2023 pm 08:37 PM

Comment utiliser la fonction urllib.quote() pour encoder des URL dans Python 2.x Les URL contiennent une variété de caractères, notamment des lettres, des chiffres, des caractères spéciaux, etc. Pour que l'URL soit transmise et analysée correctement, nous devons y coder les caractères spéciaux. Dans Python2.x, vous pouvez utiliser la fonction urllib.quote() pour coder l'URL. Présentons son utilisation en détail ci-dessous. urllib.quote

Comment utiliser le module cProfile pour l'analyse des performances du code dans Python 3.x Comment utiliser le module cProfile pour l'analyse des performances du code dans Python 3.x Jul 31, 2023 pm 08:45 PM

Python est un langage de programmation puissant et le module cProfile est l'un des outils de la bibliothèque standard Python pour l'analyse des performances. Dans Python3.x, l'utilisation du module cProfile peut nous aider à découvrir les parties du code qui prennent beaucoup de temps pour optimiser les performances. Cet article explique comment utiliser le module cProfile pour l'analyse des performances du code et fournit un exemple de code. 1. Présentez le module cProfile Pour utiliser le module cProfile, vous devez d'abord l'ajouter dans le code.

See all articles