20
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

NSSOLAdvent Calendar 2020

Day 6

[Jupyter]経過時間をリアルタイムに表示するライブラリを作った

Last updated at Posted at 2020-12-05

[Jupyter]経過時間をリアルタイムに表示するライブラリを作った

📓⏱️📓⏱️ jupyter-autotime というライブラリを作りました 📓⏱️📓⏱️

🍟 作ったもの

↓説明するより動画をみたほうがはやいと思うのでみてください↓
demo.gif

  • features
    • 自動で %time の上位互換のようなことをやってくれます。
    • 経過時間がリアルタイムに分かります。
    • セルの開始時刻が分かります。終了後は終了時刻も分かります。

🛣️ 背景

  • Jupyter で作業していたら、「このセルの実行にどれくらいかかったんだっけ 🥱」って思うことがよくあります。
  • これは %time という magic command をセルの先頭に書いておくと解決します。
  • しかし、 %time は、実行終了時に出力されるので、実行中のセルにどれだけ時間がかかっているかが分かりません。
  • ほかにも「もっとこうだったらいいのに」っていうのがあったりします。

💪 %time の改善点

  • 実行中、経過時間がわからない
    • 実行中に経過時間を表示してほしい!
  • 時間を計りたいときに都度書かなきゃならないのは面倒
    • 書き忘れることもある。毎回勝手に計ってほしい!
  • いつ実行したセルなのかが分かるとありがたい(個人的に)
    • 何時から何時に実行したものか知りたい!

🥀 使い方

Notebook の最初に以下を書くだけで動作します。

!pip install -U jupyter-autotime
%load_ext autotime

👽 実装について

出力内容を上書きすることで、1 行で見やすくスッキリと

ひたすらに時間を print してしまうと行数が増えて邪魔で使い物にならないでしょう。
1 度作成した DisplayHandle を更新していくことで、1 行で済むようにしています。

from IPython.display import display
# DisplayHandle 作成
out = display('Initialize', display_id=True)

# 描画を更新
out.update('Update')

文字列を描画する際のシングルクォートをなくす

HTML として表示することで、シングルクォートで囲まれなくなります。

from IPython.display import display, HTML

out = display(display_id=True)
# JupyterLab の場合は不要
out.display('')

text = '表示したいテキスト'
out.update(HTML(f'<pre>{text}</pre>'))

開始・終了時刻は ISO 8601 に準拠

📎 リンク

😂 不具合

2020/12/6 現在、ノートブックを再度開くと経過時間が2重に表示される不具合があります 😇😇😇
いずれなおします
→2020/12/10 なおりました

20
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?