Edited at

ちょっとかしこいtqdm①

続編→ https://qiita.com/namahoge/items/c390e79693605234212b


tqdm

https://github.com/tqdm/tqdm

ggってもシンプルな使い方しか出てこなかったので記事を書いてみました


普通のtqdm

from tqdm import tqdm

import time

def func(c):
# データの読み書きなど、何らかの処理を行う
# 今回はとりあえず何もしない関数を用意した。
pass

for char in tqdm(list("abcdefg")):
func(char)
time.sleep(0.01)


  • 進捗バーがでてきただけでなんかすげえってなった思ひ出


事故ったtqdm

from tqdm import tqdm

import time

def func(c):
# とりあえず入力文字をそのまま返してみようと思った。
return c

for char in tqdm(list("abcdefg")):
print(func(char))
time.sleep(0.01)


  • あるある

  • 変数とかも進捗バーに一緒に表示してくりーー(kerasみたいに)


理解したtqdm

from tqdm import tqdm

import time

def func(c):
# とりあえず入力文字をそのまま返してみようと思った。
return c

with tqdm(list("abcdefg")) as pbar:
for char in pbar:
pbar.set_postfix(input=char, output=func(char))
time.sleep(0.01)


  • そういうこと

  • with文を使って、このループ内で使うtqdmを操作できるようにする的な


完全に理解したtqdm

from tqdm import tqdm

import time
from collections import OrderedDict
from random import random

def func(c):
# とりあえず入力文字をそのまま返してみようと思った。
return c

with tqdm(list("abcdefg"), ncols=10) as pbar:
for i, char in enumerate(pbar):
pbar.set_postfix(OrderedDict(
output=func(char), loss=random(), acc=random()))
time.sleep(0.01)


  • おーーkerasっぽくなった

  • set_postfixに渡しているのは辞書なので、表示させる変数の順番が変わってほしくなかったらこうすると良さそう


    • (そのまま渡すと名前順的にaccが最初、stepが最後に来てしまう...)



  • ついでに黒いバーも短くしてみた

  • 完全に理解した(嘘ですもっといい書き方あったら教えて)


最後に

以上っ!