java捕获Jython的输出
我正在开发一个用于教授Python的web应用程序,我必须解决的一个问题是如何从Jython解释器捕获标准输出,这是对它的补充
目前,我在StringBuilder
对象中捕获输出,但这种方法只允许在代码完成运行时获取输出:
PythonInterpreter interp = new PythonInterpreter(null, new PySystemState());
StringWriter out = new StringWriter();
interp.setOut(out);
interp.exec(pyScript);
String outputStr = out.toString();
我想要的是,在从浏览器接收到可运行的代码后,解释器在后台继续运行。如果代码需要时间运行,但输出被捕获并存储在数据库中,那么Ajax代码就可以连续接收关于输出内容的更新
# 1 楼答案
老兄,我自己编写OutputStream的实现结果就是一条出路。只需实现write()和flush()方法就足够了。大致如下:
我想这比从另一个线程读取输出流更稳定。现在只有一个线程就足够了,解释器正在运行的线程