Pythonでバックグラウンドプロセスを開始する 質問する

Pythonでバックグラウンドプロセスを開始する 質問する

シェル スクリプトを、より読みやすい Python バージョンに移植しようとしています。元のシェル スクリプトは、"&" を使用して、バックグラウンドで複数のプロセス (ユーティリティ、モニターなど) を開始します。Python で同じ効果を実現するにはどうすればよいでしょうか。Python スクリプトが完了したときに、これらのプロセスが終了しないようにしたいのです。これはデーモンの概念に何らかの形で関連していると思いますが、簡単に実行する方法を見つけることができませんでした。

ベストアンサー1

その間jkpのソリューションが機能する場合、新しい方法 (およびドキュメントで推奨されている方法) は、モジュールを使用することですsubprocess。単純なコマンドの場合は同等ですが、複雑な操作を実行したい場合は、より多くのオプションが提供されます。

あなたのケースの例:

import subprocess
subprocess.Popen(["rm","-r","some.file"])

これはバックグラウンドで実行されます。から返されたオブジェクトをrm -r some.file呼び出すと、完了するまでブロックされるので、バックグラウンドで実行したい場合はこれを行わないでください。.communicate()Popen

import subprocess
ls_output=subprocess.Popen(["sleep", "30"])
ls_output.communicate()  # Will block for 30 seconds

ドキュメントを見るここ

また、明確にしておきたい点があります。ここで使用されている「バックグラウンド」は、純粋にシェルの概念です。技術的には、プロセスが完了するまで待機している間、プロセスをブロックせずに生成することを意味します。ただし、ここでは、シェルのバックグラウンドのような動作を指すために「バックグラウンド」を使用しました。

おすすめ記事