#やりたいこと
pythonのPopenでC++のプログラムを実行し、C++のプログラムの出力をpythonのプログラム側でリアルタイムで取得したい。
#困っている点
sys.stdout.flush()を使用して、リアルタイムで表示させようと考えたのですが、リアルタイムで出力されません。プログラムが終了したあとに、C++のプログラムの出力がまとめて表示されます。その原因を教えていただきたいです。
#コード
コードの一部を示す。
python
1 p = subprocess.Popen(cmd, 2 stdout = subprocess.PIPE, 3 stderr = subprocess.STDOUT, 4 cwd=utils.tmp_dir) 5 for line in iter(p.stdout.readline, b''): 6 print(line.rstrip().decode('utf8')) 7 sys.stdout.flush() 8 return
また、以下のように、check_callで実行した場合は、C++の出力がリアルタイムで出力されますが、C++のプログラムの出力をpythonのプログラム側で取得できていないため、Pythonのプログラム側で取得できるよう実装したいです。
python
1subprocess.check_call(cmd, cwd=utils.tmp_dir)
回答1件
あなたの回答
tips
プレビュー