在我们气象领域,对数据进行批处理随处可见,尤其是在处理模式数据的时候。为了能让这个过程加速,很多大佬们提出了不同的方法,比如使用numba库进行计算、使用dask库进行并行等等,都是非常好的加速手段。但你知道嘛,其实我们只需要在批量读取数据时加上glob的一行命令,就可以得到显著加速(数据量越大加速效果越明显)!下面具体给大家演示一下。

任务

为了测试glob的显著加速效果,我们做了两组测试:一组用os库来批量读取所有的wrfout文件,一组用glob库来批量读取所有的wrfout文件,让两组实验分别做同样的数据处理:即将o3变量插值到想要的高度层上。利用%%time命令来比较两组实验各自所用的时间,代码附在文末。

结果

代码

import xarray as xr
import numpy as np
from wrf import interpz3d,destagger
import os
import glob

正常使用os库进行批处理

path = './data/'
file_os = os.listdir(path)
file_os 
%%time
z_list=[10000.,5000.,3000.,1000.]
for file in file_os:
    ds = xr.open_dataset(path+file)
    ph=ds['PH'][0,:,10:140,10:140]
    phb=ds['PHB'][0,:,10:140,10:140]
    hgt=ds['HGT'][0,10:140,10:140]
    o3 = ds['o3'][0,:,10:140,10:140]
    P=ph+phb
    P = destagger(P,0,meta=True)
    gmp=P/9.81-hgt
    o3_z = interpz3d(o3,gmp,np.array(z_list))

测试使用glob库进行批处理

file_glob = glob.glob('./data/*')
file_glob
%%time
z_list=[10000.,5000.,3000.,1000.]
for file in file_glob:
    ds = xr.open_dataset(file)
    ph=ds['PH'][0,:,10:140,10:140]
    phb=ds['PHB'][0,:,10:140,10:140]
    hgt=ds['HGT'][0,10:140,10:140]
    o3 = ds['o3'][0,:,10:140,10:140]
    P=ph+phb
    P = destagger(P,0,meta=True)
    gmp=P/9.81-hgt
    o3_z = interpz3d(o3,gmp,np.array(z_list))

最新文章

  1. 修复jLink V9固件小记
  2. C++混合编程之idlcpp教程Python篇(7)
  3. Java操作SFTP
  4. xml转成数组,原来这么简单!
  5. System.MissingMethodException: 找不到方法:
  6. homework-01 "最大子数组之和"的问题求解过程
  7. works-er
  8. HTML基础知识笔记(一)
  9. MyBatis 使用foreach与其他方式的时候参数传递方式
  10. MVC调用部分视图PartialView
  11. YII框架CGridView sql有条件分页实现
  12. AI 强化学习
  13. 创建和管理SQL Server数据库
  14. VS 在文件中查找替换界面死掉。
  15. 外键 Foreign keys
  16. MyBatis 与 Spring 是如何结合在一起工作的——mybatis-spring(version:1.2.2)
  17. 手机蓝牙APP扫描设备的时候异常断开(未完成)
  18. dcmtk dcmmkdir 使用帮助
  19. 使用extentreports美化testng报告2,增加监听
  20. IOS与Unity交互

热门文章

  1. HDFS核心原理
  2. IDEA Git缓慢
  3. 记一次 ClickHouse 性能测试
  4. HC32L110 在 Ubuntu 下使用 J-Link 烧录
  5. 1.7_CSS基础
  6. 青源Talk第8期|苗旺:因果推断,观察性研究和2021年诺贝尔经济学奖
  7. Java开发学习(二十七)----SpringMVC之Rest风格解析及快速开发
  8. .Net Core&RabbitMQ死信队列
  9. 记录一次数据库CPU被打满的排查过程
  10. 【Traefik二次开发】中间件 Middleware 开发