J'ai une fonction multithread que je voudrais une barre d'état pour utiliser tqdm
. Existe-t-il un moyen simple d'afficher une barre d'état avec ThreadPoolExecutor
? C'est la partie de parallélisation qui me déroute.
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?
Vous pouvez envelopper tqdm
autour du executor
comme suit pour suivre la progression:
list(tqdm(executor.map(f, iter), total=len(iter))
Voici votre exemple:
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)
Et le résultat est comme ceci:
16%|██▏ | 15707/100000 [00:00<00:02, 31312.54it/s]