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