2

計算ループの反復ごとに計算結果を NetCDF 変数に書き込んでいます。これは、変数への 1 回の書き込みを行う前にすべての結果データをメモリに保持できないためです。私の仮定では、NetCDF 変数への各書き込みは、書き込み中のデータのスライスのみを書き込むため、各書き込みは高速であると想定していましたが、各書き込みにはかなりの時間がかかるようであり、NetCDF ファイル全体が割り当てられるデータのスライスだけでなく、各変数割り当てステートメントで書き換えられるため、不要な I/O オーバーヘッドが発生します。

結果データのスライスは、次のように出力 NetCDF 変数に書き込まれます。

outputSpi01MonthVariable[totalNumberOfOutputMonths, lat:lat + 1:1, len(lonDimension)] = spiScale01  # a numpy array with compatible shape assigned to the variable at specified indices

出力 NetCDF 変数に値を割り当てて、I/O オーバーヘッドがあまり発生しない、より良い方法はありますか? ところで、出力変数の塗りつぶしをオフに設定しましたが、これは効果がないようです。

4

2 に答える 2

3

私は NetCDF の読み取り/書き込みにNetCDF4-Pythonを使用していますが、いいえ、変数または変数のチャンクを書き込むときにファイル全体が書き込まれるわけではありません。完全な例を次に示します: http://nbviewer.ipython.org/5764942

于 2013-06-12T12:50:41.467 に答える