2016-04-26 44 views
1

我的模型爲每個時間步和每個變量生成一個netcdf文件,其名稱爲DDDDDDD.VVV.nc,其中DDDDDDD是日期,VVV是變量名。ncks爲多個小型netcdf文件追加緩慢

對於每個時間步,我使用nco來追加對應於不同變量的文件,以便每個時間步獲得一個文件。

#! /bin/bash 
# looping on timesteps to merge all variables 
# I use one variable 'O2o' to get the list of timesteps                                          
for timesteps in *.O2o.nc; 
do 
    timestep=$(echo $timesteps| cut -b -21) 
    echo $timestep 
    for var in $timestep*.nc; 
    do 
    ncks -Ah $var 'F1_'$timestep.nc 
    done 
done 

大約有432個輸出變量,每個文件大約是6,4K或1,1K(變量不具有相同的維數)。

我發現這個過程非常慢(例如每步15秒),而文件非常小。任何想法我應該如何優化腳本?

回答

4

緩慢可能是由於打開,移動數據,添加數據和關閉文件432次。爲了優化這個,減少文件操作的數量,特別是附加(導致)。嘗試將所有數據一次寫入一個netCDF4文件(分組),然後將文件平鋪到netCDF3中。對於每一個時間步它看起來就像這樣:

ncecat --gag in*.nc all_group.nc 
ncks -3 -G : all_group.nc all_flat.nc 

兩個命令,而不是432如果有任何變量出現在多個輸入文件時,您將收到一條錯誤,指出一個變量將在all_flat.nc被多次定義。通過刪除重複的輸入來避免這種情況。