web-dev-qa-db-ja.com

Python:外部起動プロセスの終了を待っています

すでにタイトルにある質問-os.system()呼び出しで起動されたプロセスが完了するまでpythonスクリプトを待機させるにはどうすればよいでしょうか?たとえば、次のようなコード

    for i in range( 0, n ):
       os.system( 'someprog.exe %d' % i )

これにより、要求されたプロセスが同時にn回起動され、PCが少し汗をかくことがあります)

アドバイスをありがとう。

19

os.system()doesプロセスが完了するのを待ってから戻ります。

待機していないと表示されている場合、起動しているプロセスはバックグラウンドで実行するために自分自身を切り離している可能性があります。

サイドノート:必要なのがsubprocess.Popen + waitの場合は、subprocess.callを使用します。

import subprocess
subprocess.call(('someprog.exe', str(i)))

これは、コマンドと引数を単一の文字列として渡すのではなく、明示的に渡すことを除いて、os.system()と実際に違いはありません。

17
gps

代わりにsubprocessを使用します。

import subprocess
for i in xrange(n):
  p = subprocess.Popen(('someprog.exe', str(i))
  p.wait()

詳細はこちら: http://docs.python.org/library/subprocess.html

19
Dor Shemer