はじめに
tqdmは、Pythonで進捗バーを表示するためのツールで、リスト、タプル、イテレータなどを簡単にラップし、その進行状況を表示できます。しかし、これまでzip
、enumerate
、map
関数などを使う場合はプログレスバーを表示するのに工夫が必要でした。
2020年1月25日にリリースされたtqdmのバージョン4.42.0以降では、そういった問題を解決するため、tzip
、tenumerate
、tmap
が導入され、簡単に進捗バーを書けるようになりました。この記事では、これらの関数を使った方法について、従来の方法と合わせて紹介します。
新しい方法
tzip
、tenumerate
、tmap
はtqdmのバージョン4.42.0以降で登場し、通常のzip
、enumerate
、map
の書き方でプログレスバーを簡単に表示することができます。これらの関数の引数の詳細等は公式ページで紹介されています。
以下ではその書き方の一例を紹介します。
tzipでの表示方法
from tqdm.contrib import tzip
import time
mylist_a = list(range(10))
mylist_b = list(range(10))
for _, _ in tzip(mylist_a, mylist_b):
time.sleep(0.1)
tenumerateでの表示方法
from tqdm.contrib import tenumerate
import time
mylist = list(range(10))
for _, _ in tenumerate(mylist):
time.sleep(0.1)
tmapでの表示方法
from tqdm.contrib import tmap
import time
def myfunc(x):
time.sleep(0.1)
return x*2
mylist = list(range(10))
result = list(tmap(myfunc, mylist))
従来の方法
tzip
、tenumerate
、tmap
を使わずに進捗バーを表示するには、比較的簡単なものにtqdm
の引数total
にリスト長を指定する方法やtqdm
にイテラブルを指定した上で表示する方法などがあります。ここでは、その2つの方法について紹介します。
tqdmでのzipの表示方法
from tqdm import tqdm
import time
mylist_a = list(range(10))
mylist_b = list(range(10))
# 方法1: tqdmのtotal引数にリスト長を指定して表示
for _, _ in tqdm(zip(mylist_a, mylist_b), total=len(mylist_a)):
time.sleep(0.1)
# 方法2: tqdm(iterable)を使って表示
for _, _ in zip(tqdm(mylist_a), mylist_b):
time.sleep(0.1)
tqdmでのenumerateの表示方法
from tqdm import tqdm
import time
mylist = list(range(10))
# 方法1: tqdmのtotal引数にリスト長を指定して表示
for _, _ in tqdm(enumerate(mylist), total=len(mylist)):
time.sleep(0.1)
# 方法2: tqdm(iterable)を使って表示
for _, _ in enumerate(tqdm(mylist)):
time.sleep(0.1)
tqdmでのmapの表示方法
from tqdm import tqdm
import time
def myfunc(x):
time.sleep(0.1)
return x*2
mylist = list(range(10))
# 方法1: tqdmのtotal引数にリスト長を指定して表示
result = list(tqdm(map(myfunc, mylist), total=len(mylist)))
# 方法2: tqdm(iterable)を使って表示
result = list(map(myfunc, tqdm(mylist)))
まとめ
この記事では、Pythonの進捗バー表示ツールであるtqdmを活用して、zip
、enumerate
、map
関数といった一般的なイテレーション操作に対してプログレスバーを表示する方法を紹介しました。
従来の方法では、tqdmを使ってtotal
引数にリスト長を指定したり、tqdm(iterable)
を使って進捗バーを表示する方法がありましたが、tqdmのバージョン4.42.0以降では、tzip
、tenumerate
、tmap
といった新しい関数が登場し、よりシンプルで直感的な方法でプログレスバーを導入できるようになりました。
本記事が、どなたかの役に立てば幸いです。