Python での非同期シェル コマンド実行: 代替アプローチの探索
Python スクリプトからの外部コマンドの非同期実行は、継続的なスクリプト実行を可能にする貴重な手法です。外部コマンドがタスクを実行している間。この記事では、os.system() と subprocess.Popen.
os.system() およびアンパサンド記号
の使用に焦点を当てて、この非同期動作を実現するための適切な方法を検討します。コマンドの最後にアンパサンド (&) を付けて os.system() を使用すると、実際に非同期で実行される切り離されたプロセスを作成できます。ただし、この方法には制限があり、非同期実行に推奨されるアプローチとは見なされません。
subprocess.Popen - 優れた代替法
信頼性の高い非同期コマンド実行には、サブプロセスを使用します。 Popen が好ましい選択です。これにより、子プロセスに対する幅広い制御が可能になり、次のことが可能になります。
• Create asynchronous processes with Popen() • Perform tasks concurrently while the child process is active • Terminate the process with terminate() • Query its running status with poll() • Communicate with it using stdin and stdout
subprocess.Popen
from subprocess import Popen p = Popen(['watch', 'ls']) # Replace with your command # Other code can run here while the command is executing p.terminate() # Stop the process when necessary
結論
os.system() は基本レベルの非同期実行を提供できますが、subprocess.Popen は子プロセスの制御と対話のための、より堅牢で柔軟なソリューション。その汎用性と使いやすさにより、Python での非同期シェル コマンド実行の推奨方法となっています。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3