与multiprocessing
后端一起使用时,进度条的效果非常好,但在使用distributed
调度程序作为后端时,似乎根本无法正常工作。
有解决方法吗?或另一种解决方案distributed
包本身有一些进度条,但它们都需要一个期货列表才能工作。
答案 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处使用图形仪表板,例如,在状态/下查看。在那里,您可以看到您的任务被执行而无需调用进度条。