【发布时间】:2016-04-05 18:08:11
【问题描述】:
我正在使用进度条 3.6.2,但同时运行多个进度条时显示输出不正确。他们写在彼此的“顶部”。
这是一个最小的工作示例:
import multiprocessing as mp
import progressbar
def run_many:
p = mp.Pool(mp.cpu_count(), maxtasksperchild=1)
results = p.map(run_one, args_list)
p.close()
p.join()
def run_one:
with progressbar.Progressbar(max_value=5000) as bar:
for i in range(5000):
do_heavy_lifting(i)
bar.update(i)
我得到一个行长的输出,但在看起来像
的东西之间振荡30% (1500 of 5000) |#######------------| Elapsed Time: 0:00:39 Time: 0:00:39
和
29% (1400 of 5000) |######-------------| Elapsed Time: 0:00:39 Time: 0:00:39
因为每个线程异步更新自己的进度条。看起来它们只是在彼此之上显示。
在进入循环之前盲目地插入换行符不起作用(不足为奇);什么是更好的选择?
【问题讨论】:
标签: python progress-bar command-line-interface python-multiprocessing