我使用tqdm为我的2.7 python代码添加了一个进度条,但它显着减慢了我的代码。如果没有一个示例的进度条,则需要12秒,而使用进度条则需要57秒。
没有进度条的代码如下所示:
p = mp.Pool()
combs = various combinations
result = p.map(self.parallelize, combs)
p.close()
p.join()
带进度条的代码如下:
from tqdm import tqdm
p = mp.Pool()
combs = various combinations
result = list(tqdm(p.imap(self.parallelize, combs), total = 5000))
p.close()
p.join()
有没有更好的方法不会减慢代码的速度?
答案 0 :(得分:1)
是否与使用 map
和 imap
而不是 twdm 有关系?看到来自社区的这个很好的答案。 multiprocessing.Pool: What's the difference between map_async and imap?
另外,您可以使用 ministers
参数调整 tqdm 的更新频率。如果确实与tqdm有关,降低更新频率可能会解决您的问题。
miniters : int 或 float,可选 最小进度显示更新 间隔,在迭代中。如果为 0 和 dynamic_miniters,将自动 调整到相等的 mininterval(CPU 效率更高,适合紧 循环)。如果 > 0,将跳过指定迭代次数的显示。 调整 this 和 mininterval 以获得非常有效的循环。如果你的 快速和慢速迭代(网络, 跳过项目等)你应该设置 miniters=1。