Help us understand the problem. What is going on with this article?

ちょっとかしこいtqdm①

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

tqdm

https://github.com/tqdm/tqdm
tqdm.gif

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

普通のtqdm

from tqdm import tqdm
import time

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

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

Screenshot from 2019-01-04 16-47-41.png

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

事故った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)

Screenshot from 2019-01-04 16-50-31.png

  • あるある
  • 変数とかも進捗バーに一緒に表示してくりーー(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)

Screenshot from 2019-01-04 16-52-07.png

  • そういうこと
  • 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)

Screenshot from 2019-01-04 16-53-08.png

  • おーーkerasっぽくなった
  • set_postfixに渡しているのは辞書なので、表示させる変数の順番が変わってほしくなかったらこうすると良さそう
    • (そのまま渡すと名前順的にaccが最初、stepが最後に来てしまう...)
  • ついでに黒いバーも短くしてみた
  • 完全に理解した(嘘ですもっといい書き方あったら教えて)

以上!!

こちらも興味あれば見てってください〜

twitterもよろしく)

\def\textlarge#1{%
  {\rm\Large #1}
}
\def\textsmall#1{%
  {\rm\scriptsize #1}
}

  $\textsmall{い\ い\ ね\ ほ\ し\ い\ !}$

namahoge
松尾研(居候中()). AI/VR/ロボット
https://naruya.github.io/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away