为什么只使用一个工人?
Why only a worker is used?
我正在试验 Dask,方法是 运行在我的笔记本电脑上建立一个有四个工作人员的本地集群。
我在工作人员之间分发了一个 Pandas 数据框,但是当我 运行 他们的一个功能时,我从仪表板中看到实际上只使用了其中一个。
我错过了什么?
这里是代码
from distributed import Client
client = Client('127.0.0.1:56947')
dd = client.scatter(df, broadcast=True) # df is a pandas Dataframe
r = client.submit(process_df, dd)
这一行
dd = client.scatter(df, broadcast=True)
已复制df
给您的每位员工。然而,它是一个单一的实体,最后你提交一个任务来处理它。任务是dask中的粒度单位,不会被Dask拆分。
您想要做的是将数据框拆分成多个分区。你可以自己做这个(df.loc[..]
),但是还有一个 dask.dataframe 专门用来做这种操作:例如,用 dask.dataframe.read_csv
替换你现有的 pandas.read_csv
。
我正在试验 Dask,方法是 运行在我的笔记本电脑上建立一个有四个工作人员的本地集群。
我在工作人员之间分发了一个 Pandas 数据框,但是当我 运行 他们的一个功能时,我从仪表板中看到实际上只使用了其中一个。
我错过了什么?
这里是代码
from distributed import Client
client = Client('127.0.0.1:56947')
dd = client.scatter(df, broadcast=True) # df is a pandas Dataframe
r = client.submit(process_df, dd)
这一行
dd = client.scatter(df, broadcast=True)
已复制df
给您的每位员工。然而,它是一个单一的实体,最后你提交一个任务来处理它。任务是dask中的粒度单位,不会被Dask拆分。
您想要做的是将数据框拆分成多个分区。你可以自己做这个(df.loc[..]
),但是还有一个 dask.dataframe 专门用来做这种操作:例如,用 dask.dataframe.read_csv
替换你现有的 pandas.read_csv
。