代码之家  ›  专栏  ›  技术社区  ›  max

在Concurrent.Futures中使用TQDM?

  •  8
  • max  · 技术社区  · 6 年前

    我有一个多线程函数,我想要一个状态栏用于 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?
    
    1 回复  |  直到 6 年前
        1
  •  9
  •   Dat    6 年前

    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]