python发送消息到stdout而不终止

时间:2018-04-19 10:10:33

标签: python process piping printstream

我正在尝试在java程序中的进程和java程序调用的外部python脚本之间进行通信。问题出现了,我的java程序只有在终止后才收到python程序的输出。这意味着我不能进行双面对话"进程之间,这是我的目标。这是我的python代码:

for i in range(3):
    print("hello"); #send hello to java
    line = sys.stdin.readline(); #read read response from java

和我的java代码:

    String line;
    Process external = Runtime.getRuntime().exec(execStr);
    BufferedReader in = new BufferedReader(new InputStreamReader(external.getInputStream()));
    PrintStream out = new PrintStream(external.getOutputStream(),true);


    while ((line = in.readLine)) != null){//while python has not yet terminated
        if (line.length > 0){ // if not a bogus line
            handleLine();
            sendResponse();
        }

    }

然后Java挂起在下一个readLine上,因为它永远不会从python接收下一个输出。

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

对此可能有一个更好的答案,但我从来没有"脸红" python的输出(我认为这将自动完成),但通过在打印行后添加一个简单的sys.stdout.flush(),它解决了我的问题。