skmatz devlog

Shunta Komatsu's Develop Blog

Python の for-loop を Slack で監視するライブラリを開発した

https://github.com/skmatz/spr/raw/master/assets/images/banner.png

demo

Python で時間がかかる for-loop を処理するとき (例: deep learning の training) に,loop の進行度合いをモバイル端末で把握したいということがあります.

これを解決するために,簡単でありますが,for-loop の各 iteration で Slack にプログレスバーと,任意の値を表示する Python 製のライブラリを開発しました.

github.com

機能

冒頭の gif のように,プログレスバーを表示します.

使い方は簡単で,SlackProgress インスタンスを作成して,progress() メソッドを iterator に適用してあげるだけです.

また,Slack の Access Token とメッセージを投稿する Channel ID を環境変数に設定するか,インスタンスに渡してあげる必要があります.

from time import sleep

from spr import SlackProgress


def main():
    sp = SlackProgress()

    value = 0.0

    for _epoch in sp.progress(range(10)):
        value += 1.0
        sp.set_params({"value": value})

        sleep(1)


if __name__ == "__main__":
    main()
TOKEN=xxx CHANNEL=yyy python example.py

導入

PyPI にはアップロードしていないので,git から直接インストールする必要があります.

pip install git+https://github.com/skmatz/spr.git

余談ですが,正直小さいライブラリであれば PyPI 経由しなくてもいいのではと思ったりしています.

おわりに

このライブラリは,毎回値を投稿するのではなく初回以降は編集して表示するので,通知がうるさくないというメリットがあります.

しかし,過去の値が消されてしまい,例えば deep learning の training で loss が下がっているか把握できないので,今後機能を追加する予定です.

そこまで有用なライブラリだとは思いませんが,deep learning をする方や,これまで各 iteration で Slack に投稿していた方は使ってみるといいかもしれません.