如何在多处理和python 2中使用tqdm?

问题描述

要在参数空间上进行大型扫描以进行科学计算,这需要花费我计算机上几个小时的时间,所以我想实现一个tqdm进度条。与非并行代码一起使用时效果很好。现在,我想使用multiprocessing来加速代码。但是,似乎tqdm仅与multiprocessing中的python 3兼容,而由于某些旧的依赖性,我不得不使用python 2。没有进度条正常运行的我的代码的最低版本是

from multiprocessing import Pool
from itertools import product
import numpy as np
import tqdm
import time

def _foo(args):
    a,b = args
    time.sleep(1)
    return (a*b,a+b)

if __name__ == '__main__':
    a = np.linspace(0,3,num = 3,endpoint = False)
    b = np.linspace(0,endpoint = False)
    p = Pool(8)
    #I would like to start the bar over here...
    r = np.array(p.map(_foo,product(a,b)))
    #... and end it here
    print(r)

似乎只能使用p.imap的{​​{1}}版本不包含的p.starmappython 2解决问题(请参阅{{3 }}。您知道在multiprocessing的{​​{1}}内创建运行进度条的另一种方法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)