[Jupyter]経過時間をリアルタイムに表示するライブラリを作った
📓⏱️📓⏱️ jupyter-autotime
というライブラリを作りました 📓⏱️📓⏱️
🍟 作ったもの
↓説明するより動画をみたほうがはやいと思うのでみてください↓
- 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 に準拠
- ISO 8601 Time Interval
-
YYYY-mm-ddTHH:MM:SS/YYYY-mm-ddTHH:MM:SS
で開始/終了を表します。
📎 リンク
😂 不具合
2020/12/6 現在、ノートブックを再度開くと経過時間が2重に表示される不具合があります 😇😇😇
いずれなおします
→2020/12/10 なおりました