how to speed up the process of `getvar`
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 28/100
- Issue 类型
- 缺陷
- 描述清晰度
- 基本清楚
- 活跃度
- 停滞
- 技术栈
- python
- 领域
- data, performance
调研方向
首先,使用 Python、wrf.getvar、netCDF4 以及列出的 SINALPHA、COSALPHA 和 uvmet_wspd_wdir 变量,复现 issue 中的计时比较。跟踪 getvar 入口点,并将其对 ALL_TIMES 和派生诊断的处理与直接读取进行比较;完成的标准是找出瓶颈,并证明一种不改变结果的更快方法。
由索引模型根据 Issue 内容生成。
描述
I found that using wrf.getvar to get variables is quite slow.
For example
import time
import wrf
import netCDF4 as nc
wrfout = nc.Dataset(wrfout_file)
t0 = time.time()
SINALPHA_WRF = wrf.getvar(wrfout, 'SINALPHA', timeidx=wrf.ALL_TIMES, squeeze=False)
COSALPHA_WRF = wrf.getvar(wrfout, 'COSALPHA', timeidx=wrf.ALL_TIMES, squeeze=False)
t1 = time.time()
sinalpha = wrfout['SINALPHA'][:]
cosalpha = wrfout['COSALPHA'][:]
t2 = time.time()
print(f'getvar: {t1 - t0},directly: {t2 - t1}')
In my PC, the time of getvar is about 0.084 s, and the time of directly is about 0.015 s.
To be a little more complicated, to get the wind speed and the wind direction using wrf.getvar(wrfout, 'uvmet_wspd_wdir', timeidx=wrf.ALL_TIMES, squeeze=False) would take the time about 14.596 s, while we first get ua, va, SINALPHA, COSALPHA by wrf.getvarand then using the relation between these variables to get the wspd and wdir, whose values are not significant different from the result of getvar, but it only takes 2.263 s.
So, what reason make it seems that the calculation speed of getvar is slow and how to improve it?
In my case, I want to extract some variables from wrfout and backup, e.g, most of the variables may be the shape of (4,50,300,300), and I want to save some diagnostic variables to be (4, 10, 300, 300)(interpolated on certain pressure level or height). Any suggestion to efficiently accomplish this kind of task.
wrf.__version__='1.3.2'
- 主要语言
- Python
- 星标
- 498
- 派生
- 178
- PR 合并指标
- 30 天内没有已合并 PR
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
NCAR/wrf-python 的其他 Issue
-
NCAR/wrf-python#309 · 已指派 1 人 ·
-
难度 4/5 3-5 天 新手友好度 38/100
NCAR/wrf-python#307 · 5 条评论 ·
-
难度 4/5 3-5 天 新手友好度 35/100
NCAR/wrf-python#286 · 3 条评论 ·
-
难度 5/5 一周以上 新手友好度 25/100
NCAR/wrf-python#282 · 1 条评论 ·
-
PyPI releases 未关闭
NCAR/wrf-python#274 · 5 条评论 · 1 个 reaction · 已指派 1 人 ·
相似的 Issue
-
agent-ready documentation needs-triage
难度 1/5 1-3 小时 新手友好度 88/100
-
documentation
难度 1/5 1 小时以内 新手友好度 91/100
-
workflow-status page template still says reusable workflows are "triggered only by workflow_call:" 未关闭
难度 1/5 1 小时以内 新手友好度 92/100
-
instance instance add
难度 1/5 1 小时以内 新手友好度 72/100
searxng/searx-instances#939 · 1 条评论 ·
-
area-deployment area-integrations triage:bot-seen
难度 2/5 半天 新手友好度 86/100