Python 分布式工作dask中的内存泄漏

Python 分布式工作dask中的内存泄漏,python,dask-distributed,Python,Dask Distributed,我在dask中使用分布式工作者来进行丑陋的并行计算 import dask.dataframe as dd import json import os import dask.bag as db import pandas as pd from dask.distributed import Client def decode_utf8(input_string): return json.loads(input_string.encode().decode("utf-8-sig"))

我在dask中使用分布式工作者来进行丑陋的并行计算

import dask.dataframe as dd
import json
import os
import dask.bag as db
import pandas as pd
from dask.distributed import Client

def decode_utf8(input_string):
    return json.loads(input_string.encode().decode("utf-8-sig"))

def read_json_file(file_path):
    return db.read_text(file_path).map(decode_utf8)

def batch_process_id(local_path, output_path):
    start_time = time.time()
    client = Client()

    print("-" * 30)
    dask_df = read_json_file(local_path).to_dataframe()
    dask_df.repartition(npartitions=160)
    dask_ecounter_id_schema = ("dummy_id","int")


    temp_series = dask_df["Encounter"].apply(lambda row: int(row["Id"]) if "Id" in row else -1,
                                             meta = dask_ecounter_id_schema)
    temp_series.compute()


if __name__ == "__main__":
    local_path_list =  ["./sessions-201906*.txt",
                       ]
    output_path_list = ["./flowsheet06"]

    for i in range(len(local_path_list)):
        batch_process_id(local_path_list[i], output_path_list[i])

我使用的是4核集群,总内存为16GB。 在sessions-201906*.txt和大约40个文件中,文件大小在0.4GB到0.9GB之间变化

在运行程序时,我遇到了以下问题: 1.Distributed.worker-警告-内存使用率很高,但worker没有可存储到磁盘的数据。也许其他进程正在泄漏内存?进程内存:3.27 GB--工作内存限制:4.08 GB 2.distributed.utils_perf-警告-最近完全垃圾收集占用了34%的CPU时间(阈值:10%) distributed.worker-WARNING-gc.collect()花费了1.904s。这通常是某些任务同时处理太多Python对象的迹象。将工作重新组合成更小的任务可能会有所帮助


有人能提供处理这些问题的建议吗?

即使我没有使用apply to dask.series,也只是将dask.series分配给变量temp_series=dask_df[“遭遇”],仍然可以看到sam问题。