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

Aug 01, 2023 pm 01:04 PM
subprocess:子进程 模块:module 管理:manage

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"])
Copier après la connexion

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)
Copier après la connexion

在上述代码中,我们将Shell命令 "ls -l" 作为参数传给 Popen 类的构造方法,并通过参数 shell=True 来执行 Shell 命令。

二、子进程的控制
在子进程创建成功后,我们可以使用子进程对象的各种方法来控制子进程的行为。下面是一些常用的方法:

  1. wait():等待子进程结束并返回状态码。
  2. communicate(input=None):与子进程进行交互,可以向子进程发送内容,也可以获取子进程的输出结果。
  3. poll():检查子进程是否结束,如果结束则返回进程的状态码,未结束则返回 None。

下面是一个示例代码,在子进程结束时获取输出结果并输出:

import subprocess

# 执行一个系统命令,获取输出结果
p = subprocess.Popen(["ls", "-l"], stdout=subprocess.PIPE)
output, error = p.communicate()
print(output.decode("utf-8"))
Copier après la connexion

在上述代码中,我们使用 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"))
Copier après la connexion

在上述代码中,我们首先创建一个子进程对象 p,执行命令 ls -l 并将结果输出到 output 中。接着,我们再次创建一个子进程对象 p,执行命令 grep example 并将 input_data

En plus des méthodes ci-dessus, nous pouvons également exécuter des commandes Shell en spécifiant le paramètre 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.

🎜2. Contrôle du sous-processus🎜Une fois le sous-processus créé avec succès, nous pouvons utiliser diverses méthodes de l'objet sous-processus pour contrôler le comportement du sous-processus. Voici quelques méthodes couramment utilisées : 🎜
  1. wait() : Attendez la fin du processus enfant et renvoyez un code d'état.
  2. 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.
  3. 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.
🎜Ce qui suit est un exemple de code qui obtient le résultat de sortie et le génère à la fin du processus enfant : 🎜rrreee🎜Dans le code ci-dessus, nous utilisons 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!

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

Video Face Swap

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 !

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 résoudre le problème des autorisations rencontré lors de la visualisation de la version Python dans le terminal Linux? Comment résoudre le problème des autorisations rencontré lors de la visualisation de la version Python dans le terminal Linux? Apr 01, 2025 pm 05:09 PM

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 le projet et les méthodes axées sur les problèmes dans les 10 heures? Comment enseigner les bases de la programmation novice en informatique dans le projet et les méthodes axées sur les problèmes dans les 10 heures? Apr 02, 2025 am 07:18 AM

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é par le navigateur lors de l'utilisation de Fiddler partout pour la lecture de l'homme au milieu? Comment éviter d'être détecté par le navigateur lors de l'utilisation de Fiddler partout pour la lecture de l'homme au milieu? Apr 02, 2025 am 07:15 AM

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

Comment copier efficacement la colonne entière d'une dataframe dans une autre dataframe avec différentes structures dans Python? Comment copier efficacement la colonne entière d'une dataframe dans une autre dataframe avec différentes structures dans Python? Apr 01, 2025 pm 11:15 PM

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 sans servir_forever ()? Comment Uvicorn écoute-t-il en permanence les demandes HTTP sans servir_forever ()? Apr 01, 2025 pm 10:51 PM

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 ...

Comment créer dynamiquement un objet via une chaîne et appeler ses méthodes dans Python? Comment créer dynamiquement un objet via une chaîne et appeler ses méthodes dans Python? Apr 01, 2025 pm 11:18 PM

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 ...

See all articles