首页 > 解决方案 > Gdal 内存泄漏,但 Anaconda 不允许我升级到更新版本

问题描述

我正在尝试运行一些简单的操作RasterioGDAL但内存泄漏正在杀死我的计算机。我只是想打开并绘制一个tif文件,它大约需要 50 GB !!!Ram,即使图像本身只有 1.2 GB。

代码非常简单。

import rasterio
from rasterio.plot import show
src = rasterio.open("../temp.tif", mode="r+")
datimg = src.read(1)
show(src.read(1))

这是中间面板中内存利用率的图片。这都是内存。

内存利用率

所以这个过程实际上从未奏效,现在我必须退出并重新登录我的计算机上的帐户以清除内存。

我安装了 gdal 版本 2.3.3 和 rasterio 版本 1.0.21,所以我希望将 gdal 版本升级到 3.0.1 的人可以解决问题。

我在 python 3.7、Ubuntu linux 18.04 LTS 上使用 Anaconda 发行版。但是当我尝试使用升级到较新的 gdal 版本时,conda install -c conda-forge gdal gdal==3.0.1我收到错误,表明与其他软件包不兼容。

conda install -c conda-forge gdal gdal==3.0.1
Collecting package metadata (current_repodata.json): done
Solving environment: failed
Collecting package metadata (repodata.json): done
Solving environment: failed

UnsatisfiableError: The following specifications were found to be incompatible with each other:

  - _anaconda_depends -> mkl-service
  - anaconda -> mkl-service==1.1.2=py36he904b0f_5
  - fiona -> gdal[version='>=2.4.1,<2.5.0a0'] -> libgdal==2.4.2=h0845e09_2
  - gdal==3.0.1 -> libgdal==3.0.1=h0845e09_3
  - geopandas -> fiona -> gdal[version='>=2.4.1,<2.5.0a0'] -> libgdal==2.4.2=h0845e09_2
  - libgdal
  - pkgs/main/linux-64::importlib_metadata==0.8=py37_0
  - pkgs/main/linux-64::mkl-service==1.1.2=py37he904b0f_5
  - pkgs/main/linux-64::path.py==11.5.0=py37_0 -> importlib_metadata[version='>=0.5']
  - rasterio -> libgdal[version='>=2.4.1,<2.5.0a0']

所以我不确定我应该在这里做什么?每次运行命令时,我都无法继续注销并重新登录我的帐户。内存永远不会释放,所以如果我再次运行任何 rasterio 或 gdal 命令,整个系统就会锁定。

标签: pythonubuntuanacondagdalrasterio

解决方案


我建议你使用 Google Colab。就我一年前的记忆而言,它允许使用近 20 GB 的 RAM。在 Colab 中尝试一下,至少你可以确定你的电脑不会再死机了。另一个建议是,尝试使用较小的地图来观察可能出现的问题。


推荐阅读