Pythonから外部コマンドを非同期に実行するにはどうすればよいですか? 質問する

Pythonから外部コマンドを非同期に実行するにはどうすればよいですか? 質問する

Python スクリプトから非同期的にシェル コマンドを実行する必要があります。つまり、外部コマンドが実行中も Python スクリプトは実行を継続し、必要な処理を実行したいということです。

私はこの投稿を読みました:

Pythonで外部コマンドを呼び出す

その後、いくつかテストしてみましたが、コマンドの最後にos.system()を使用すれば&、コマンドが返されるのを待たずに済むようです。疑問に思うのは、これがそのようなことを実現する適切な方法であるかどうかです。試してみましたcommands.call()が、外部コマンドでブロックされるため、うまくいきませんでした。

os.system()これを使用することが賢明かどうか、または他の方法を試す必要があるかどうかをお知らせください。

ベストアンサー1

subprocess.Popenまさにあなたが望むことを実行します。

from subprocess import Popen
p = Popen(['watch', 'ls']) # something long running
# ... do other stuff while subprocess is running
p.terminate()

(コメントからの回答を完成させるために編集します)

Popenインスタンスは他にも様々なことができます。poll()まだ実行中かどうか確認し、communicate()stdin にデータを送信し、終了するまで待機します。

おすすめ記事