了解Dask的任务流

时间:2018-11-14 13:33:29

标签: python-3.x dask

我使用8核机器上的分布式调度程序在本地运行dask。初始化时,我看到:

enter image description here

哪个看起来正确,但是我对诊断中的任务流感到困惑(如下所示): enter image description here

我期望有8行对应于8个工作人员/核心,这不正确吗?

谢谢

AJ

我添加了我正在运行的代码:

import dask.dataframe as dd
from dask.distributed import Client, progress
client = Client()
progress(client)

# load datasets
trd = (dd.read_csv('trade_201811*.csv', compression='gzip',  
                    blocksize=None, dtype={'Notional': 'float64'})
         .assign(timestamp=lambda x: dd.to_datetime(x.timestamp.str.replace('D', 'T')))
         .set_index('timestamp', sorted=True))

1 个答案:

答案 0 :(得分:1)

每行对应一个单线程。一些更复杂的Dask操作将启动其他线程,尤其是在任务启动其他任务时,尤其是在机器学习工作负载中,这种情况尤其容易发生。

我的猜测是您正在使用以下方法之一:

  • dask.distributed.get_clientdask.distributed.worker_client
  • Scikit-Learn的Joblib
  • Dask-ML

如果是,则您看到的行为是正常的。任务流图看起来有些奇怪,是的,但希望它仍然可以解释。