Mein Python-Code gibt einen Druck in Java in einer while true Schleife erwerben, aber nicht gedruckt, wenn ich in einem Schlaf setzen, auch nach der Dauer des Schlafes gibt es keine Ausgabe in Javakann nicht Python Ausgabe
print 33
import time
while True:
i = 0
time.sleep(0.01)
j = 0
print 1
Dies ist der Python-Code. Ich führe dies aus einem Java-Code
public class DistanceHandler extends Thread
{
private Process p;
private ProcessBuilder pb;
private BufferedReader bfr;
public DistanceHandler()
{
try{
/*pb = new ProcessBuilder("python", "/home/pi/Distance.py");
pb.redirectErrorStream(true);
pb.
p = pb.start();
bfr = new BufferedReader(new InputStreamReader(p.getInputStream()));*/
p = Runtime.getRuntime().exec("sudo python /home/pi/test.py -u");
bfr = new BufferedReader(new InputStreamReader(p.getInputStream()));
} catch (Exception e) {
System.out.println(e);
}
}
public void run(){
System.out.println("Start read");
if(p != null) {
System.out.println("P alive: " + p.isAlive());
int line = 0;
try {
while ((line = bfr.read()) != -1) {
//display each output line form python script
System.out.println((char)line);
if(line < 10){
System.out.println("Pop that Ballooon ");
}
}
} catch (Exception e) {
System.out.println(e);
}
}
}
}
Hinzufügen von [ 'sys.stdout.flush()'] (https://docs.python.org/2/library /io.html#io.IOBase.flush), nachdem die Druckanweisung auch nicht hilft? – dhke
Danke, das hat es behoben – Uruar
Zur Erklärung: Der Ausgabestrom ist gepuffert, d. H. 'Print' verursacht nur die tatsächliche Ausgabe, wenn der Puffer voll ist oder wenn der Datenstrom explizit geleert wird. Bei kleinen Teilen der Ausgabe verlassen Ihre Daten den Python-Prozess nie und bleiben im Stream-Puffer. Datei unter * das übliche Problem mit Streams * – dhke