In einem iPython-Notizbuch habe ich eine while-Schleife, die einen seriellen Port abhört und print
die empfangenen Daten in Echtzeit.
Was ich erreichen möchte, um nur die zuletzt empfangenen Daten anzuzeigen (d. H. Nur eine Zeile mit den neuesten Daten. Kein Scrollen im Zellenausgabebereich)
Ich denke, ich muss die alte Zellenausgabe löschen, wenn ich neue Daten erhalte, und dann die neuen Daten drucken. Ich frage mich, wie ich alte Daten programmgesteuert löschen kann.
Sie können IPython.display.clear_output
um die Ausgabe einer Zelle zu löschen.
from IPython.display import clear_output
for i in range(10):
clear_output()
print("Hello World!")
Am Ende dieser Schleife sehen Sie nur einen Hello World!
.
Ohne ein Codebeispiel ist es nicht einfach, Ihnen Arbeitscode zu geben. Wahrscheinlich ist das Puffern der letzten n Ereignisse eine gute Strategie. Immer wenn sich der Puffer ändert, können Sie die Ausgabe der Zelle löschen und den Puffer erneut drucken.
Und falls Sie hierher kommen, wie ich es getan habe, um das Gleiche für Handlungen in einem Julia-Notizbuch in Jupyter zu tun, können Sie Plots verwenden:
IJulia.clear_output(true)
also für eine art animiertes plot mit mehreren läufen
if nrun==1
display(plot(x,y)) # first plot
else
IJulia.clear_output(true) # clear the window (as above)
display(plot!(x,y)) # plot! overlays the plot
end
Ohne den Aufruf von clear_output werden alle Diagramme separat angezeigt.