gpt4 book ai didi

json - json和请求的Dask内存泄漏问题

转载 作者:行者123 更新时间:2023-12-03 16:58:54 32 4
gpt4 key购买 nike

这只是在远程 Dask kubernetes 集群中重现内存泄漏问题的示例最小测试。

def load_geojson(pid):
import requests
import io
r = requests.get("https://github.com/datasets/geo-countries/raw/master/data/countries.geojson")
temp = r.json()
import sys
size_temp = sys.getsizeof(temp)
del temp
return size_temp

L_geojson = client.map(load_geojson, range(200))

del L_geojson
观察:每次运行时工作内存(字节存储)稳定增加约 30 MB,并持续增加直到使用整个内存。
我用 urllib 尝试的另一个测试,我观察到每次运行时内存随机增加和减少。
预期行为:删除引用 L_geojson 后应清理内存。
有人可以帮忙解决这个内存泄漏问题吗?

最佳答案

我可以确认内存的增加和“完整的垃圾收集最近花费了 X% CPU 时间”消息,。如果我允许 future 运行,内存也会增加,但速度更慢。
使用 fsspec没有这个问题,正如您在 urllib 中发现的那样,这就是 Dask 通常用于其 IO 的内容( fsspecrequests 切换到使用 aiohttp 进行通信)。
您修改后的函数可能看起来像

def load_geojson(pid):
import fsspec
import json
fs = fsspec.filesystem("http"). # or use fsspec.open
r = fs.cat("https://github.com/datasets/geo-countries/raw/master/data/countries.geojson"). # get bytes
temp = json.loads(r)
import sys
size_temp = sys.getsizeof(temp)
del temp
return size_temp
但您仍然会收到垃圾收集警告。

关于json - json和请求的Dask内存泄漏问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64046973/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com