kakakakakku blog

Weekly Tech Blog: Keep on Learning!

Jupyter Notebook で clear_output() を使って定期的に表示を更新する

Jupyter Notebook を使ってデモ環境を作るときに whileprint を組み合わせて,定期的に表示を更新したかった.例を出すと「時計のように」毎秒表示を更新するイメージとなる.調べたところ 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 化した.スムーズに更新できている.

f:id:kakku22:20200318120246g:plain

wait パラメータとは?

ドキュメントを読むと,clear_output に指定できるパラメータとして wait がある.デフォルトは False で,意味としては「次の表示をするまで待機するか?」となる.上の例では意図的に True を指定していた.

IPython.display.clear_output(wait=False)

ipython.org

以下のようにデフォルト Falseclear_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 化した.すぐにクリアされるため,ある程度ガタガタした表示になる.

f:id:kakku22:20200318120310g:plain

まとめ

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