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
パラメータを指定して調整できる.