我有一系列大量的栅格数据集,代表了几十年的月降雨量。我用Python编写了一个脚本,循环遍历每个栅格数据集,执行以下操作:
不幸的是,我不能轻松地将我的数据分块处理 - 我真的需要能够一次性处理所有数据。这是因为,在每次迭代结束时,输出(水平面)将作为下一次迭代的起点反馈回去。
目前我的编程理解非常基础,但我认为所有对象都只是在每个循环中被覆盖。我(愚蠢地?)假设如果代码成功循环一次,那么它应该能够无限循环而不会使用更多的内存。
我尝试阅读各种文档,并发现了一些叫做"垃圾回收器"的东西,但我感觉自己正在深入地学习,我的大脑都快糊了!有人能够提供一些关于当我的代码循环时对象在内存中实际发生的事情的基本见解吗?是否有一种方法可以在每个循环结束时释放内存,或者是否有一种更“Pythonic”的编码方式可以避免这个问题?
- 将栅格转换为numpy遮罩数组,
- 进行大量的数组运算来计算新的水位,
- 将结果写入输出栅格.
- 重复以上步骤。
MemoryError
。除了指出Python放弃的代码行之外,该错误没有提供任何更多的信息。不幸的是,我不能轻松地将我的数据分块处理 - 我真的需要能够一次性处理所有数据。这是因为,在每次迭代结束时,输出(水平面)将作为下一次迭代的起点反馈回去。
目前我的编程理解非常基础,但我认为所有对象都只是在每个循环中被覆盖。我(愚蠢地?)假设如果代码成功循环一次,那么它应该能够无限循环而不会使用更多的内存。
我尝试阅读各种文档,并发现了一些叫做"垃圾回收器"的东西,但我感觉自己正在深入地学习,我的大脑都快糊了!有人能够提供一些关于当我的代码循环时对象在内存中实际发生的事情的基本见解吗?是否有一种方法可以在每个循环结束时释放内存,或者是否有一种更“Pythonic”的编码方式可以避免这个问题?