#tqdmを黙らせる (tqdmの無効化する・表示させない方法)
Python一生わからないC-merです。
PythonでProgress barを表示させる上でお世話になることの多いtqdmですが、出力結果をテキストファイルに書き出したくなった時、出力を無効化・非表示化したいと思ったので、メモといった感じで解決法をまとめていきたいと思います。
tqdmとは
tqdmはリストといったイテラブル (Iterable) のイテレーションの進捗状況を良しなに表示してくてるものです。
from tqdm import tqdm for i in tqdm(range(1000)): pass
100%|██████████████████████████████████| 1000/1000 [00:00<00:00, 2345678.90it/s]
tqdmというおおよそ英語では見かけなさそうな文字列は、実はアラビア語由来でそのままprogressと意味みたいです。1 一応スペイン語の略語で"I love you so much"という意味にもなるそうです。
tqdm単体を黙らせる
tqdmクラスにはdisableというパラメータが含まれますので、これをTrueにすればtqdmを黙らせられます。
for i in tqdm(range(1000), disable=True): pass
こんなまわりくどいことをせずにtqdmを外せばいいです。
全てのtqdmを黙らせる
全てのtqdmを1つ1つ黙らせるわけではなく黙らせたいこともあると思いますが、このdisableはコンストラクタで初期化されているため、適当にtqdm.disable=True
みたいなことをしても何も起こりません。
そこでこちらを参考にfunctoolsのpartialmethodでメソッド (ここではコンストラクタ) を上書きしてあげます。
from functools import partialmethod tqdm.__init__ = partialmethod(tqdm.__init__, disable=True)
なんということでしょう。全てのtqdmが黙ります。
このfunctoolsは結構便利っぽいので他にも応用が効かせられそう。