<p>我正在做一个项目,从两个NetCDF文件中获取数据,每个文件的大小为521.8mb。诚然,这些文件相当大。我正在开发一款MacBookPro,它有4GB的内存,但这台电脑大约有4年的历史了。代码是用Python编写的。在</p>
<p>这些文件包含了地球上一年的气象数据。它是一个4D数组,包含时间(长度1460)、海拔高度(长度17)、纬度(长度73)和经度(长度144)。我一次只需要这些信息的某些部分。具体地说,我需要所有的时间,但是只有一个海拔高度,并且只有一个特定的经纬度区域(20x44)。在</p>
<p>我有代码从两个文件收集所有这些数据,只识别我需要的数据,执行计算,并将数据输出到文本文件中。一旦完成了那一年,它循环使用63年的数据,即126个同等大小的文件。现在,代码显示它在进程开始时就用完了内存。相关代码似乎是:</p>
<pre><code>from mpl_toolkits.basemap.pupynere import NetCDFFile
#Create the file name for the input data.
ufile="Flow/uwnd."+str(time)+".nc"
vfile="Flow/vwnd."+str(time)+".nc"
#Get the data from that particular file.
uu=NetCDFFile(ufile)
vv=NetCDFFile(vfile)
#Save the values into an array (will be 4-dimentional)
uwnd_short=uu.variables['uwnd'][:]
vwnd_short=vv.variables['vwnd'][:]
</code></pre>
<p>因此,第一部分创建NetCDF文件的名称。第二部分从NetCDF文件获取所有数据。第三部分获取导入的数据并将其放入4D数组中。(这可能不是技术上的数组,因为Python是如何处理数据的,但是我之所以这样认为是因为我的C++背景。很抱歉没有合适的词汇表。)稍后,我从4D数组中分离出我需要的特定数据并执行必要的计算。问题是,这以前是可行的,但现在我的计算机在处理<code>vv=NetCDFFile(vfile)</code>行时内存不足。在</p>
<p>是否有内存泄漏的可能?有没有办法只获取我需要的特定范围的数据,这样我就不会把整个文件都带来了?有没有一种更有效的方法,从把数据输入到整理我需要的数据部分来执行计算?在</p>