Python でのユーザー入力によるサブプロセスの出力へのアクセス
Python では、サブプロセス モジュールを利用して外部スクリプトを実行できます。ただし、ユーザー入力を求めるスクリプトを呼び出す場合、呼び出しスクリプト内でその出力を取得するのは困難な場合があります。この記事では、この問題の解決策について説明します。
解決策 1: 入力で check_output() を使用する
subprocess.check_output() 関数を使用すると、スクリプトを実行してキャプチャできます。その出力。入力をスクリプトに渡すには、入力パラメーターを使用します。
<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>
解決策 2: モジュールのインポートと関数呼び出し
別のアプローチは、スクリプト モジュールをインポートすることです。特定の関数を呼び出します:
<code class="python">import a results = [a.search(query) for query in ['query 1', 'query 2']]</code>
インポートされたスクリプトが if __name__ == "__main__": ガードを使用して、インポート時にコードが実行されないようにします。
解決策3: マルチプロセッシング
クエリ処理が CPU を集中的に使用する場合、マルチプロセッシングを使用して実行を並列化することでパフォーマンスを向上させることができます:
<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>
以上が記事の内容に適した質問形式のタイトルをいくつか示します。 * Python でユーザー入力を使用してサブプロセスから出力をキャプチャする方法 * ユーザー I を必要とするサブプロセスからの出力の取得の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。