Python 使用tqdm和多进程,进度条将代码速度降低5倍

Python 使用tqdm和多进程,进度条将代码速度降低5倍,python,parallel-processing,progress-bar,multiprocess,tqdm,Python,Parallel Processing,Progress Bar,Multiprocess,Tqdm,我使用TQM在我的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 =

我使用TQM在我的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()

有没有更好的方法不会让我的代码慢下来?

这是否与使用
map
imap
而不是twdm有关?从社区中看到这个伟大的答案

此外,您还可以使用
参数调整tqdm的更新频率。如果它真的与TQM有关,减少更新频率可能会解决问题

miniters:int或float,可选最小进度显示更新 间隔,以迭代为单位。如果0和动态参数,将自动 调整到相等的最小间隔(CPU效率更高,适用于紧凑型 循环)。如果>0,将跳过指定迭代次数的显示。 调整此值和MiniInterval以获得非常有效的循环。如果你的 无论是快速迭代还是慢速迭代(网络、, 跳过项目等)应将miniters设置为1


您需要按顺序获得结果吗
imap_unordered
可能会有帮助。@t请确认结果是否需要保持有序。您是否找到解决方案?