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
进度条在与 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