如何解决如何限制python GDAL VRT读取的RAM使用率
当使用python gdal库读取VRT区域时,RAM使用率一直保持增加到大约50%的可用内存。在普通计算机上,这很好,但在具有大量可用RAM的计算群集上运行时,就会成为问题。
有没有办法限制gdal使用多少RAM?
编辑:
我正在使用vrt.ReadAsArray(...)
一次读取256x256像素的块,这些块立即使用,以后不再需要。但是,从内存消耗来看,gdal会将读取的切片保留在内存中,以防万一再次需要它们,直到可用内存大约填满50%。只有这样,它才会开始从RAM中删除未使用的图块。不管我在什么程序上运行硬件,内存消耗都会随着时间的推移不断增加,直到达到50%。
我想将其限制为32Gb RAM。
我发现gdal的CHACHE_MAX
配置选项。但是,在使用gdal.GetCacheUsed()
检查已使用的缓存量时,它显然总是为0。因此,尽管该选项听起来很有希望,但这似乎无法提供解决方案。
解决方法
我终于做了一些测试,找到了解决方案,以防其他人遇到这个问题。
尽管gdal.GetCacheUsed()
始终返回0,但是更改CACHE_MAX
config选项对我来说解决了这个问题。可以在python这样设置:
from osgeo import gdal
gdal.SetCacheMax(134217728) # 134Mb
虽然我无法弄清楚此限制的适用程度,但缓存大小似乎是每个波段,每个VRT中的栅格,每个VRT,每个进程。也就是说,具有许多栅格和波段等的VRT的内存使用量将更高。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。