【发布时间】:2017-06-14 16:17:20
【问题描述】:
为了使我的代码更“pythonic”和更快,我使用“多处理”和一个映射函数来发送它a)函数和b)迭代范围。
植入的解决方案(即直接在 tqdm.tqdm(range(0, 30)) 范围内调用 tqdm)不适用于多处理(如下面的代码所示)。
进度条显示从0到100%(python读取代码时?)但并不表示map函数的实际进度。
如何显示进度条,指示“地图”功能在哪一步?
from multiprocessing import Pool
import tqdm
import time
def _foo(my_number):
square = my_number * my_number
time.sleep(1)
return square
if __name__ == '__main__':
p = Pool(2)
r = p.map(_foo, tqdm.tqdm(range(0, 30)))
p.close()
p.join()
欢迎任何帮助或建议...
【问题讨论】:
-
可以把进度条的代码sn-p贴出来吗?
-
对于使用
.starmap()寻找解决方案的人:Here 是Pool添加.istarmap()的补丁,它也适用于tqdm。
标签: python multiprocessing progress-bar tqdm