0

複数の grib2 ファイルから作成された xarray データセットを操作すると、セグメンテーション エラーが発生します。この障害は、netcdf への書き込み時とデータフレームへの書き込み時に発生します。何がうまくいかないかについての提案は大歓迎です。

files = os.listdir(download_dir)

ファイルの例 ( http://dd.weather.gc.ca/model_hrdps/west/grib2/00/000/から) 'CMC_hrdps_west_RH_TGL_2_ps2.5km_2016072800_P015-00.grib2',...

# import and combine all grib2 files
ds = xr.open_mfdataset(files,concat_dim='time',engine='pynio')

<xarray.Dataset>
Dimensions:    (time: 48, xgrid_0: 685, ygrid_0: 485)
Coordinates:
    gridlat_0  (ygrid_0, xgrid_0) float32 44.6896 44.6956 44.7015 44.7075 ...
  * ygrid_0    (ygrid_0) int64 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
  * xgrid_0    (xgrid_0) int64 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
  * time       (time) datetime64[ns] 2016-07-28T01:00:00 2016-07-28T02:00:00 ...
    gridlon_0  (ygrid_0, xgrid_0) float32 -129.906 -129.879 -129.851 ...
Data variables:
    u          (time, ygrid_0, xgrid_0) float64 nan nan nan nan nan nan nan ...
    gridrot_0  (time, ygrid_0, xgrid_0) float32 nan nan nan nan nan nan nan ...
    Qli        (time, ygrid_0, xgrid_0) float64 nan nan nan nan nan nan nan ...
    Qsi        (time, ygrid_0, xgrid_0) float64 nan nan nan nan nan nan nan ...
    p          (time, ygrid_0, xgrid_0) float64 nan nan nan nan nan nan nan ...
    rh         (time, ygrid_0, xgrid_0) float64 nan nan nan nan nan nan nan ...
    press      (time, ygrid_0, xgrid_0) float64 nan nan nan nan nan nan nan ...
    t          (time, ygrid_0, xgrid_0) float64 nan nan nan nan nan nan nan ...
    vw_dir     (time, ygrid_0, xgrid_0) float64 nan nan nan nan nan nan nan ...

netcdf への書き出し

ds.to_netcdf('test.nc')

セグメンテーション違反 (コアダンプ)

4

1 に答える 1

0

PyNIO はマルチスレッドではうまく機能しません。に追加lock=Trueしてみてくださいopen_mfdataset(おそらくデフォルトでこれを設定する必要があります)。

通話に追加proprocess=lambda x: x.load()してみてください。open_mfdatasetこれにより、次のデータセットを処理する前に、各データセットがメモリに完全に読み込まれます。

于 2016-08-02T05:54:52.540 に答える