Dask ProgressBar 不适用于分布式后端

Dask ProgressBar doesn't work with distributed backend

进度条在与 multiprocessing 后端一起使用时效果很好,但在使用 distributed 调度程序作为后端时似乎根本不起作用。

有办法解决这个问题吗?还是另一种解决方案? distributed 包本身有一些进度条,但它们都需要一个 futures 列表才能工作。

主要区别在于,使用 multi threading/processing,结果会通过管道返回到控制线程,但对于分布式,它们是在集群上异步计算的(即使是在您的本地计算机上)。 如果您以前有类似

的代码
with ProgressBar():
    out = collection.compute()

现在你可以做

from dask.distributed import progress
out = c.compute(collection)   # c is the client
progress(out)

并收集您的结果:out.result()c.gather(out)

请注意,分布式调度程序还在 http://yourhost:8787 提供了一个图形仪表板,例如,请参阅 status/。在那里你可以看到你的任务正在执行而根本不需要调用进度条。

a solution linked to in this tqdm issue (a popular progress bar package), which will hopefully be merged in at some point: https://github.com/tqdm/tqdm/issues/1230