可以简化stdout和stdin通信

时间:2015-02-04 01:29:03

标签: java python

我一直在学习java和python之间的进程间通信。

我正在尝试一些新代码,但它没有按预期工作。

在java类

我有一个打印方法

Java

public static main void (String[] args)
{
    System.out.println("this is iteration 1");
    System.out.println("this is iteration 2");
    System.out.println("this is iteration 3");
    System.out.println("this is iteration 4");
}

Python

import sys 
while True:
    data = sys.readline()
    print "in python " + data

所需的输出

In python : this is iteration 1
In python : this is iteration 2
In python : this is iteration 3
In python : this is iteration 4

当前输出

In python: this is iteration 1this is iteration 2this is iteration 3this is iteration 4
[]
[]
[]
[]

新问题 但是,我的data = sys.stdin.readline()没有阻塞。据说,我不知道我的标准输出会有多少行。我怎么能在第一次迭代后允许stdin.readline()被阻塞,因为我找不到一个方法来刷新stdin的缓冲区。

3 个答案:

答案 0 :(得分:2)

尝试使用sys.readline()代替sys.readlines()。前者将一次读取一行,后者读取所有可用的行。

答案 1 :(得分:0)

你的'while'循环没有退出条件,导致它无限执行。而是使用'for'循环并给出一个范围来执行4次。

答案 2 :(得分:0)

没有什么能打破你的while循环,并且在Python输出中没有任何东西可以创建新行:

import sys 
while True **SOME CONDITIONAL**:
 data = sys.readlines()
 print "in python " + data **+ NEW LINE**

或者你可以添加休息时间;见WhileLoops