我使用scala进程来启动python程序,并使用ProcessLogger从python程序中捕获stdout。我看到python程序中的print语句只有在python程序完成后才会打印出来。是否有方法在执行python print语句时对其进行流处理?
import scala.sys.process.{ProcessLogger, _}
object TestProcessStdOut {
def main(args: Array[String]) {
var cmd = "python python_test.py";
val process = Process(cmd).run(new ProcessLogger {
override def out(s: => String) = println(s)
override def buffer[T](f: => T) = ???
override def err(s: => String) = ???
})
}
}python_test.py
import time
print("print data 1")
time.sleep(2)
print("print data 2")
time.sleep(2)
print("print data 3")
time.sleep(2)发布于 2017-03-18 01:38:55
告诉python不要用-u缓冲scala中的输出将有助于您:
var cmd = "python -u python_test.py"https://stackoverflow.com/questions/42864697
复制相似问题