问题描述
要在参数空间上进行大型扫描以进行科学计算,这需要花费我计算机上几个小时的时间,所以我想实现一个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.starmap
或python 2
来解决问题(请参阅{{3 }}。您知道在multiprocessing
的{{1}}内创建运行进度条的另一种方法吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)