首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从ddf.map_partitions调用中访问公共资源时性能较差

从ddf.map_partitions调用中访问公共资源时性能较差
EN

Stack Overflow用户
提问于 2019-06-18 13:34:44
回答 1查看 57关注 0票数 0

在从.nc函数中访问全局dask.dataframe.map_partitions文件时,我确实遇到了性能问题。

一些背景:我有一大组netCDF文件,其中的值被映射到lat+lon值。对于每个val+lat+lon行,我想要计算到海岸值的距离。

由于所有数据集都不能同时进入内存,所以我考虑使用dask.dataframe (ddf)。我已经生成了ddf并希望现在添加dist2coast列。这是我的伪代码:

代码语言:javascript
复制
def get_dist2coast(latarr, lonarr, do_interp=True, cfilepath='~/data/dist2coast/dist2coast_1deg.nc'):
""" Calculates distance to coast."""
    #
    # access global/common dist2coast_1deg.nc file
    # e.g.:
    #
    # ds = xr.open_dataset('~/data/dist2coast/dist2coast_1deg_merged.nc')
    # return d2c_vec based on lat+lon values

ddf = ddf.map_partitions(lambda df: df.assign(dist2coast=get_dist2coast(df.lat, df.lon, do_interp=False)))

这段代码大约需要20几个。如果我工作在记忆中的熊猫数据,它需要大约7。

我的第一个猜测是,不好的性能来自调用get_dist2coast的各个线程之间的某种锁定行为。dist2coast_1deg_merged.nc包括lat/lon网格上的距离到海岸的值。

为此,我并不真正依赖于dask性能优化。但是,在以后的处理步骤中,我肯定会从中受益。

你认为如何?有什么办法可以避免这种锁定行为吗?

EN

回答 1

Stack Overflow用户

发布于 2019-06-21 10:36:58

这段代码大约需要20几个。如果我工作在记忆中的熊猫数据,它需要大约7。

如果你能让潘达斯为你工作,那几乎总是一个更好的选择。

https://docs.dask.org/en/latest/best-practices.html#start-small

我的第一个猜测是,不好的性能来自调用get_dist2coast的各个线程之间的某种锁定行为。dist2coast_1deg_merged.nc包括lat/lon网格上的距离到海岸的值。

也许吧。我建议对您的代码进行分析,以查看什么是缓慢的。学习这可能会帮助你走向良好的表现。

https://docs.dask.org/en/latest/understanding-performance.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56650449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档