python - Gdal 内存泄漏,但 Anaconda 不允许我升级到更新版本
问题描述
我正在尝试运行一些简单的操作Rasterio
,GDAL
但内存泄漏正在杀死我的计算机。我只是想打开并绘制一个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 命令,整个系统就会锁定。
解决方案
我建议你使用 Google Colab。就我一年前的记忆而言,它允许使用近 20 GB 的 RAM。在 Colab 中尝试一下,至少你可以确定你的电脑不会再死机了。另一个建议是,尝试使用较小的地图来观察可能出现的问题。
推荐阅读
- c++ - 如何在 for 循环中取消第一个结果,使其不会重复
- sql - 堆叠语法
- python - 使用数据流清理 CSV 文件中的数据
- php - 如何在php中使用私钥生成签名
- django - 图片未根据登录用户过滤
- sql - 如何创建具有读取、写入、删除和查看数据库中所有对象的完全权限的 sql 用户角色?
- python-2.7 - 如何将所有数据和 py 文件添加到 pyinstaller
- amazon-web-services - 网络负载均衡器的 AWS EC2 安全组权限
- firebase - 当应用程序在后台接收通知时,FirebaseMessaging.configure 不会运行
- c# - KeyDown 事件在 Windows 应用程序中不起作用