[英]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.