Accès à la sortie d'un sous-processus avec entrée utilisateur en Python
En Python, vous pouvez utiliser le module de sous-processus pour exécuter des scripts externes. Cependant, lors de l'appel d'un script qui demande une saisie à l'utilisateur, obtenir sa sortie dans le script appelant peut s'avérer difficile. Cet article explore les solutions à ce problème.
Solution 1 : Utiliser check_output() avec Input
La fonction subprocess.check_output() vous permet d'exécuter un script et de capturer sa sortie. Pour transmettre une entrée au script, utilisez le paramètre d'entrée :
<code class="python">import os import subprocess # Get script directory script_path = os.path.join(os.getcwd(), 'a.py') # Execute the script and capture output output = subprocess.check_output([sys.executable, script_path], input='\n'.join(['query 1', 'query 2']), universal_newlines=True)</code>
Solution 2 : importation de module et appel de fonction
Une approche alternative consiste à importer le module de script et appelez une fonction spécifique :
<code class="python">import a results = [a.search(query) for query in ['query 1', 'query 2']]</code>
Assurez-vous que le script importé utilise la garde if __name__ == "__main__": pour empêcher son code de s'exécuter lors de l'importation.
Solution 3 : Multitraitement
Si le traitement des requêtes est gourmand en CPU, vous pouvez améliorer les performances en parallélisant l'exécution à l'aide du multitraitement :
<code class="python">from multiprocessing import freeze_support, Pool import a freeze_support() pool = Pool() # Use all available CPUs results = pool.map(a.search, ['query 1', 'query 2'])</code>
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!