首页 > 解决方案 > Dask pandas 冻结并最终被杀死

问题描述

pandas.apply用 a并行化了dask.map_paritions它,它在测试 DataFrame(600 行)上运行良好,将我的计算从 6 分钟缩短到 2 分钟 - 按预期计算内部函数。

但是,当我运行完整集(6000 行)时,代码没有响应,CPU 和内存似乎被加载并最终被杀死:

import dask.dataframe as dd        
ddf = dd.from_pandas(df, npartitions=params.parallel)
applied = ddf.map_partitions(lambda dframe: dframe.apply(lambda x: my_fun(inData, x), axis=1)).compute(scheduler='processes')

15 分钟后(顺便说一句,完整数据集上的简单 pandas.apply 需要大约 15 分钟)我从控制台得到:

Process finished with exit code 137 (interrupted by signal 9: SIGKILL)

我正在运行 MacOS、python 3.7,从 PyCharm 调用 - 有什么提示吗?

PS。我尝试了几个分区(2,4)和很多(32 - 因为我可能是内存问题)

PS2。我将相当大的对象传递inData给我apply function的经典熊猫没关系,因为它是线性的,在这里我认为这可能是一个问题(因为我有一个例如 ca 700MB 的网络图) - 可以吗?

标签: pandasparallel-processingdask

解决方案


推荐阅读