PumpStreamHandler可以实时捕获流程输出

时间:2017-08-01 08:52:21

标签: java python apache-commons-exec

我尝试通过apache-commons-exec捕获python进程输出。但看起来它不会打印输出,只有在python进程完成后才显示输出。

这是我的java代码

CommandLine cmd = CommandLine.parse("/Users/jzhang/anaconda/bin/python");
cmd.addArgument("/Users/jzhang/a.py");
DefaultExecutor executor = new DefaultExecutor();
ExecuteWatchdog watchDog = new ExecuteWatchdog(ExecuteWatchdog.INFINITE_TIMEOUT);
executor.setWatchdog(watchDog);

executor.execute(cmd);

这是我想要执行的python代码(我只在退出python进程后得到输出,但我想要的是实时获取输出)

for i in range(1,10):
  print(i)

import time

time.sleep(10)

1 个答案:

答案 0 :(得分:1)

我找到了答案,我应该使用set flush to true。 E.g。

print('hello world', flush=True)