ホームページ >バックエンド開発 >Python チュートリアル >「subprocess.Popen」を使用して Python でマルチプロセス パイプラインを効率的に作成するにはどうすればよいですか?

「subprocess.Popen」を使用して Python でマルチプロセス パイプラインを効率的に作成するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-15 14:11:16406ブラウズ

How Can I Efficiently Create Multi-Process Pipelines in Python Using `subprocess.Popen`?

マルチプロセス パイプラインでの subprocess.Popen の使用

subprocess モジュールを使用してパイプ経由で複数のプロセスを接続する場合、これらのパイプがどのように確立されるかを理解することが重要です。この場合の目標は、シェル コマンドを複製することです:

echo "input data" | awk -f script.awk | sort > outfile.txt

当初、次のようにこのタスクを実行する試みが行われました:

p_awk = subprocess.Popen(["awk","-f","script.awk"],
                          stdin=subprocess.PIPE,
                          stdout=file("outfile.txt", "w"))
p_awk.communicate( "input data" )

ただし、このアプローチはパイプのみを実行します。データを awk に送信しましたが、その出力をソートにリダイレクトできませんでした。この問題を修正するには、シェルの機能を利用します。

awk_sort = subprocess.Popen( "awk -f script.awk | sort > outfile.txt",
    stdin=subprocess.PIPE, shell=True )
awk_sort.communicate( b"input data\n" )

この改訂されたアプローチでは、パイプラインの構築をシェルに委任し、シェルがプロセス間のシームレスなデータ転送を処理できるようにします。

さらに、awk の使用を完全に再検討することをお勧めします。必要な処理を Python で直接実装することで、コードを簡素化し、複数のプログラミング言語やパイプライン処理の複雑さから生じる潜在的な問題を排除できます。

以上が「subprocess.Popen」を使用して Python でマルチプロセス パイプラインを効率的に作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。