Dask ProgressBar 不适用于分布式后端

Dav*_*man 2 python distributed progress-bar dask

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

有没有解决的办法?还是另一种解决方案?该distributed软件包本身有一些进度条,但它们都需要一个期货列表才能工作。

mdu*_*ant 7

关键区别在于,对于多线程/处理,结果通过管道返回到控制线程,但对于分布式,它们在集群上异步计算(即使是在您的本地机器上)。如果您以前有类似的代码

with ProgressBar():
    out = collection.compute()
Run Code Online (Sandbox Code Playgroud)

现在你可以做

from dask.distributed import progress
out = c.compute(collection)   # c is the client
progress(out)
Run Code Online (Sandbox Code Playgroud)

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

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