繁体   English   中英

格式 dask.diagnostics 进度条

[英]Format dask.diagnostics progress bar

我以下列方式使用 dask.diagnostic ProgressBar:

from dask.diagnostics import ProgressBar
import dask.dataframe as dd

    with ProgressBar():
        try:
            pileup_df = dd.read_csv(sorted_pileup, sep='\t', header=None)
            lists_df = dd.read_csv(sorted_lists, sep='\t', header=None)
            pileup_df.compute()
            lists_df.compute()
        except...

我得到带有“#”字符的默认进度条。
来自tqdm我知道您可以使用提供的参数之一来格式化进度条。
在这个脚本中,我使用了 tqdm 和 dask.diagnostics ProgressBar,所以我希望它们看起来一样。

现在对于 tqdm 我正在使用这种格式:
"{l_bar}%s{bar}%s{r_bar}" % (Fore.GREEN, Fore.RESET)

我浏览了文档,但找不到改变进度条外观的方法。

另外,如果有一种方法可以将 tqdm 与 dask 集成,我很想听听它——我相信这对我来说是一个更好的解决方案。
我检查了文档,只提到了与熊猫的集成。
我试图对 dask 应用相同的方法,但失败了。

这个问题解决了我的问题。
基本上,我们将修改ProgressBar的定义并使用以下内容:

from dask.callbacks import Callback
from tqdm.auto import tqdm

class ProgressBar(Callback):
    def __init__(self, desc=""):
        self.desc = desc

    def _start_state(self, dsk, state):
        self._tqdm = tqdm(total=sum(len(state[k]) for k in ['ready', 'waiting', 'running', 'finished']), desc=self.desc)

    def _posttask(self, key, result, dsk, state, worker_id):
        self._tqdm.update(1)

    def _finish(self, dsk, state, errored):
        pass

然后只需调用

with ProgressBar("your description"):
    arr.compute() # your Dask computation here

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM