介绍
我正在使用 dask.distributed
并行化一些代码(令人尴尬的并行任务)。
.
from dask.distributed import Client, LocalCluster
cluster = LocalCluster(n_workers=2, threads_per_worker=1,memory_limit =8e9)
client = Client(cluster)
问题:
.
distributed.worker - WARNING - Memory use is high but worker has no data to store to disk.
Perhaps some other process is leaking memory? Process memory: 6.21 GB -- Worker memory limit: 8.00 GB
暗示 worker 使用的部分 RAM 不是
freed
在不同的文件之间(我猜是剩余的过滤中间体......)题
有没有办法在开始处理下一个图像之前释放 worker 的内存?我是否必须运行
garbage collector
在运行任务之间循环?编辑
我包括
gc.collect()
在工作人员运行的函数结束时调用,但没有消除警告。非常感谢您的帮助!
最佳答案
只要客户端持有分布式值的引用计数,集群就不会将其从内存中清除。这在 Managing Memory 中有详细说明文档,特别是“清除数据”部分。
关于python - 任务之间保存的 dask-worker 内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53905659/