Dask ProgressBar不适用于分布式后端

时间:2017-04-19 11:31:02

标签: python progress-bar distributed dask

multiprocessing后端一起使用时,进度条的效果非常好,但在使用distributed调度程序作为后端时,似乎根本无法正常工作。

有解决方法吗?或另一种解决方案distributed包本身有一些进度条,但它们都需要一个期货列表才能工作。

1 个答案:

答案 0 :(得分:3)

关键的区别在于,使用多线程/处理时,结果将通过管道传送回控制线程,但是对于分布式,它们是在群集上异步计算的(即使这是在本地计算机上)。 如果你之前有像

这样的代码
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处使用图形仪表板,例如,在状态/下查看。在那里,您可以看到您的任务被执行而无需调用进度条。