Maison >développement back-end >Tutoriel Python >Comment chaîner efficacement les processus à l'aide du « subprocess.Popen » de Python avec ou sans tuyaux ?
En Python, le module subprocess fournit une interface pratique pour interagir avec les processus du système d'exploitation. Lorsqu'il s'agit de pipelines de commandes complexes, il est possible de rencontrer des difficultés lors de la connexion de plusieurs processus.
Supposons que nous souhaitions exécuter la commande shell suivante à l'aide de subprocess.Popen :
echo "input data" | awk -f script.awk | sort > outfile.txt
Cependant, nous avons une chaîne d'entrée au lieu d'utiliser echo. De plus, nous avons besoin de conseils sur la façon de diriger la sortie du processus awk pour trier.
import subprocess # Delegate the pipeline to the shell awk_sort = subprocess.Popen("awk -f script.awk | sort > outfile.txt", stdin=subprocess.PIPE, shell=True) awk_sort.communicate(b"input data\n")
Cette approche exploite les capacités du shell pour créer le pipeline tandis que Python est responsable pour fournir des entrées et capturer des sorties.
Une solution alternative consiste à réécrire le script script.awk en Python, éliminant ainsi le besoin d'awk et de pipeline. Cette approche simplifie le code et élimine les problèmes de compatibilité potentiels.
La réponse suggère également des raisons pour lesquelles l'utilisation d'awk n'est peut-être pas la solution la plus optimale :
En conclusion, L'utilisation de subprocess.Popen pour canaliser plusieurs processus peut être réalisée soit en déléguant le pipeline au shell, soit en réécrivant le script en Python pour éliminer le besoin de canaux. Cette dernière approche est souvent préférable en raison de sa simplicité et de son efficacité.
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!