tqdm
を使用するためのステータスバーが必要なマルチスレッド関数があります。 ThreadPoolExecutor
でステータスバーを表示する簡単な方法はありますか?私を混乱させているのは、並列化の部分です。
import concurrent.futures
def f(x):
return f**2
my_iter = range(1000000)
def run(f,my_iter):
with concurrent.futures.ThreadPoolExecutor() as executor:
function = list(executor.map(f, my_iter))
return results
run(f, my_iter) # wrap tqdr around this function?
次のようにtqdm
をexecutor
の周りにラップして、進行状況を追跡できます。
list(tqdm(executor.map(f, iter), total=len(iter))
以下に例を示します。
import time
import concurrent.futures
from tqdm import tqdm
def f(x):
time.sleep(0.001) # to visualize the progress
return x**2
def run(f, my_iter):
with concurrent.futures.ThreadPoolExecutor() as executor:
results = list(tqdm(executor.map(f, my_iter), total=len(my_iter)))
return results
my_iter = range(100000)
run(f, my_iter)
結果は次のようになります。
16%|██▏ | 15707/100000 [00:00<00:02, 31312.54it/s]