繁体   English   中英

将繁重的计算功能应用于dask数据帧的最有效方法?

[英]Most efficient way of applying a compute-heavy function to a dask dataframe?

我有一个〜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是否会有任何好处。

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

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

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

暂无
暂无

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

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