2010-12-10 36 views
3

実行されたプログラムが終了するまでブロックせずにプログラム内からプログラムを実行するにはどうすればよいですか?Python:外部プログラムの実行方法

os.system() 

をしかし、実行されるプログラムは、/クローズ停止するまで、それは私のプログラムを停止します。

私が試してみました。私のプログラムが外部プログラムの実行後も実行を継続できるようにする方法はありますか?

答えて

11

サブプロセスモジュールの使用を検討してください。

サブプロセスは、外部アプリケーションが実行される新しいプロセスを生成します。他のアプリケーションが実行されている間、アプリケーションは実行を継続します。

+3

あなたが明示的にそれを待つ場合を除き。 –

+2

'os.system'は新しいプロセスも生成します - ' subprocess'はあなたにそれ以上の制御を与えます。 –

2

サブプロセスモジュールを使用できますが、os.systemも機能します。それはシェルを介して動作するので、あなたの文字列の最後に '&'を置くだけです。インタラクティブシェルの場合と同様に、バックグラウンドで実行されます。

しかし、何らかの出力を得る必要がある場合は、おそらくサブプロセスモジュールを使用することになります。

1

あなたはそのためsubprocessを使用することができます。

import subprocess 
import codecs 

# start 'yourexecutable' with some parameters 
# and throw the output away 
with codecs.open(os.devnull, 'wb', encoding='utf8') as devnull: 
    subprocess.check_call(["yourexecutable", 
          "-param", 
          "value"], 
          stdout=devnull, stderr=subprocess.STDOUT 
         ) 
関連する問題