Maison  >  Article  >  développement back-end  >  Voici quelques titres de style question qui correspondent au contenu de votre article : * Comment capturer la sortie d'un sous-processus avec la saisie utilisateur en Python ? * Obtenir la sortie des sous-processus nécessitant l'utilisateur I

Voici quelques titres de style question qui correspondent au contenu de votre article : * Comment capturer la sortie d'un sous-processus avec la saisie utilisateur en Python ? * Obtenir la sortie des sous-processus nécessitant l'utilisateur I

DDD
DDDoriginal
2024-10-27 03:04:03774parcourir

Here are a few question-style titles that fit the content of your article:

* How to Capture Output from a Subprocess with User Input in Python? 
* Getting Output from Subprocesses That Require User Input in Python: A Guide
* Interacting with Subprocesses

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!

Déclaration:
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