Dans un ordinateur portable iPython, j'ai une boucle while qui écoute un port série et print
les données reçues en temps réel.
Ce que je veux réaliser pour afficher uniquement les dernières données reçues (c’est-à-dire une seule ligne affichant les données les plus récentes. Pas de défilement dans la zone de sortie de la cellule)
Ce dont j'ai besoin (je pense) est d'effacer l'ancienne sortie de la cellule lorsque je reçois de nouvelles données, puis imprime les nouvelles données. Je me demande comment puis-je effacer les anciennes données par programmation?
Vous pouvez utiliser IPython.display.clear_output
pour effacer la sortie d'une cellule.
_from IPython.display import clear_output
for i in range(10):
clear_output()
print("Hello World!")
_
À la fin de cette boucle, vous ne verrez qu’un seul _Hello World!
_.
Sans exemple de code, il n'est pas facile de vous donner du code de travail. La mise en mémoire tampon des n derniers événements est probablement une bonne stratégie. Chaque fois que le tampon change, vous pouvez effacer la sortie de la cellule et l'imprimer à nouveau.
Et au cas où vous viendriez ici, comme moi, cherchant à faire la même chose pour les parcelles d'un carnet Julia à Jupyter, à l'aide de Parcelles, vous pouvez utiliser:
IJulia.clear_output(true)
donc pour une sorte de complot animé de plusieurs exécutions
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
Sans l'appel clear_output, tous les tracés apparaissent séparément.