将繁重的计算功能应用于简单数据框的最有效方法是?

时间:2019-08-26 17:26:13

标签: python dataframe dask dask-distributed

我有一个〜6000行长的数据框。我需要将一个函数(称为heavy_func)应用于特定列的所有行,每次调用最多需要一分钟。该函数的输入是一个字符串,输出是一个np.array。

我正在使用dask distributed设置要执行申请的集群。现在,我使用80个工作人员,每个工作人员有4个内核和8 GB RAM。

实际的申请步骤如下:

ddf = dd.from_pandas(df, npartitions=100)

ddf['new_col'] = ddf.apply(heavy_func, axis=1, meta=('ddf', 'object'))
df = ddf.compute()

我想知道如何在这里最大化效率。

我应该最大化工人或核心人数吗? nr应该以什么比例。分区和nr。的工人/核心是?

我也不确定使用map_partitions而不是apply是否会有好处。

1 个答案:

答案 0 :(得分:0)

对于进程和线程,您可能需要阅读以下内容:https://docs.dask.org/en/latest/best-practices.html#processes-and-threads

这取决于您的计算释放GIL的程度。

在这里使用apply vs map_partitions应该不会有太大区别。