1

風速 pcolormesh プロットに風の矢印を追加しています。これらは見栄えがよく、ほぼ正確に私が見たいと思っている方法です. 残念ながら、複数のレベル、予測時間などをループすると、マシンがクラッシュするポイントまでメモリ使用量が増加します。

これは、風の矢の計算をしないと起こりません。問題は次のコードにあります。

#!/usr/local/sci/bin/python

'''
Created on Jul 18, 2014

@author: freb
'''

import numpy as np

import cartopy
from cartopy.vector_transform import vector_scalar_to_grid

input_coord_system = cartopy.crs.PlateCarree()

this_plot_projection =  cartopy.crs.PlateCarree()

x_start = -180.0
x_end = 180.0
n_x = 500
d_x = (x_end - x_start) / n_x

y_start = -90.0
y_end = 90.0
n_y = 400
d_y = (y_end - y_start) / n_y



n_runs = 10

for i_run in range(n_runs):

    print 'vector_scalar_to_grid call number %s' % i_run
    random_u_data = np.random.randn(n_y, n_x)
    random_v_data = np.random.randn(n_y, n_x)
    random_spd_data = np.sqrt( random_u_data**2 + random_v_data**2)             

    source_lon = np.arange(x_start, x_end, d_x)
    source_lat = np.arange(y_start, y_end, d_y)

    regrid_shape = (60, 40)

    #import pdb #@@@
    #pdb.set_trace() #@@@
    #print 'stop here' #@@@

    (vt_lon, vt_lat, vt_u, vt_v, vt_spd) = vector_scalar_to_grid(input_coord_system,     \
                            this_plot_projection, \
                            regrid_shape, \
                            source_lon, source_lat, \
                            random_u_data, \
                            random_v_data, \
                            random_spd_data )

    print vt_lon.shape, vt_lat.shape, vt_u.shape, vt_v.shape, vt_spd.shape

私は何か間違ったことをしていますか?それともカートピーのバグですか?

ありがとう、

マルコム

4

1 に答える 1

0

私の環境で使用してメモリの問題を再現できません。私は使用しています:

  • numpy v1.8.1
  • scipy v0.14.0
  • cython v0.20.1
  • カートピー(マスター)

変換コードは scipy の griddata ルーチンを使用します。これが過去にメモリ リークに苦しんでいるという報告を見てきました (たとえば、Scipy griddata はループ内/メモリ リークでは機能しません)。これが問題だと思いますが、scipy、cython、またはその両方で修正されたかどうかはわかりません...どのパッケージバージョンを使用していますか?

(編集:言及するのを忘れていました。condaパッケージマネージャーからscipy/cythonなどを使用しています)

于 2014-07-18T14:20:59.320 に答える