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 にデータを送信し、終了するまで待機します。