我尝试通过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)
答案 0 :(得分:1)
我找到了答案,我应该使用set flush to true。 E.g。
print('hello world', flush=True)