Dask显然没有在任务完成时释放内存

时间:2019-07-08 15:31:48

标签: pandas dask dask-distributed dask-delayed

我正在尝试在分布式系统上执行自定义dask图,但事实是它似乎并未释放已完成任务的内存。我在做错什么吗?

我尝试过更改进程数并使用本地集群,但这似乎没有什么作用。

from dask.distributed import Client
from dask import get
import pandas as pd

client = Client()

def get_head(df):
    return df.head()

process_big_file_tasks = {f'process-big-file-{i}': (pd.read_csv, '/home/ubuntu/huge_file.csv') for i in range(50)}
return_fragment_tasks = {f'return-fragment-{i}': (get_head, previous_task) for i, previous_task in enumerate(process_big_file_tasks)}

dsk = {
    **process_big_file_tasks,
    **return_fragment_tasks,
    'concat': (pd.concat, list(return_fragment_tasks))
}

client.get(dsk, 'concat')

由于任务是相互独立的(或者至少是消耗内存最多的任务),因此每个任务完成时都应释放其内存。

1 个答案:

答案 0 :(得分:0)

您如何确定它没有释放内存?我建议查看Dask的仪表板以查看计算的结构,包括已发布和未发布的内容。此youtube视频可能会有所帮助

https://www.youtube.com/watch?v=N_GqzcuGLCY

尤其是,我鼓励您在运行计算时注意“图形”选项卡。