Я записывал некоторые переменные (80k, около 300, около 500) в файл .n c. Я пытался с xarray и netCDF4 в python. Но не удалось с ошибкой следующим образом. Я знаю, что эта переменная слишком велика (около 5 ГБ), но иногда 7 переменных (каждый 5 ГБ) можно записать в 7 .n c файлов (соответственно), тогда эта ошибка возникала, иногда, когда я хочу записать 1 var (5 ГБ) в один файл .n c, но эта ошибка произошла. Поэтому я сомневался, что эта ошибка не связана с размером файла? Этот новый var - результаты расчета этих 7 переменных. Так могут ли быть некоторые результаты NaN или что-то еще, связанное со значениями, вызывающими эту ошибку? Есть кто-нибудь, кто мог бы помочь мне, пожалуйста? Большое спасибо!
In [11]: run ERA5_nc.py
There are 25 HDF5 objects open!
Report: open objects on 72057594037927938
Segmentation fault (core dumped)
мой код указан ниже:
def save2NCfile_singleyear(var, var_name, lon, lat, time, year, time_str):
#var_name: string of var
nlat, nlon, ntime = len(lat), len(lon), len(time)
pr = Dataset('./singleyear_2010/ERA5_'+var_name+'_hourly_CONUS_'+time_str+'.nc', 'w',format='NETCDF4')
pr.createDimension('time', ntime)
#pr.createDimension(var_name, ntime, nlat)
pr.createDimension('latitude', nlat)
pr.createDimension('longitude', nlon)
ftime = pr.createVariable('time', 'f', ('time',))
flat = pr.createVariable('latitude', 'f', ('latitude',))
flon = pr.createVariable('longitude', 'f', ('longitude',))
VAR = pr.createVariable(var_name, 'f', ('time', 'latitude', 'longitude'))
ftime[:] = time
flat[:] = lat
flon[:] = lon
VAR[:,:,:] = var
pr.close()
print(var_name+' '+' of year '+time_str+'save to .nc file!')
#using xarray
import xarray as xr
def xa_save2NCfile_singleyear(var, var_name, lon, lat, time, year, time_str):
#var_name: string of var
#nlat, nlon, ntime = len(lat), len(lon), len(time)
#pr = Dataset('./singleyear_2010/ERA5_'+var_name+'_hourly_CONUS_'+time_str+'.nc', 'w',format='NETCDF4')
ds = xr.Dataset({var_name: (('time', 'latitude', 'longitude'), var)},
coords={'time': time,
'latitude': lat,
'longitude': lon})
ds.to_netcdf('./singleyear_2010/ERA5_'+var_name+'_hourly_CONUS_'+time_str+'.nc')
ds.close()
#pr.close()
print(var_name+' '+' of year '+time_str+'save to .nc file!')