Jupyter Notebook を使ってデモ環境を作るときに while と print を組み合わせて,定期的に表示を更新したかった.例を出すと「時計のように」毎秒表示を更新するイメージとなる.調べたところ IPython.display モジュールに clear_output 関数があり,解決できたので,参考までにまとめておく.
サンプルコード
Python で日付を表示しながら,1秒後に clear_output を実行する.
from datetime import datetime from time import sleep from IPython.display import clear_output while True: print(datetime.now()) sleep(1) clear_output(True)
実際に Jupyter Notebook で実行している画面を gif 化した.スムーズに更新できている.

wait パラメータとは?
ドキュメントを読むと,clear_output に指定できるパラメータとして wait がある.デフォルトは False で,意味としては「次の表示をするまで待機するか?」となる.上の例では意図的に True を指定していた.
IPython.display.clear_output(wait=False)
以下のようにデフォルト False で clear_output を実行する.
from datetime import datetime from time import sleep from IPython.display import clear_output while True: print(datetime.now()) sleep(1) clear_output()
同じく Jupyter Notebook で実行している画面を gif 化した.すぐにクリアされるため,ある程度ガタガタした表示になる.

まとめ
Jupyter Notebook で定期的に表示を更新する場合は IPython.display モジュールの clear_output 関数を使う.要件によって wait パラメータを指定して調整できる.