在我们气象领域,对数据进行批处理随处可见,尤其是在处理模式数据的时候。为了能让这个过程加速,很多大佬们提出了不同的方法,比如使用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))

【强烈推荐】用glob库的一行命令显著加速批量读取处理数据的更多相关文章

  1. boost之program_options库,解析命令行参数、读取配置文件

    一.命令行解析 tprogram_options解析命令行参数示例代码: #include <iostream> using namespace std; #include <boo ...

  2. centos shell基础 alias 变量单引号 双引号 history 错误重定向 2>&1 jobs 环境变量 .bash_history source配置文件 nohup & 后台运行 cut,sort,wc ,uniq ,tee ,tr ,split, paste cat> 2.txt <<EOF 通配符 glob模式 发邮件命令mail 2015-4-8 第十二节课

    centos shell基础知识 alias  变量单引号 双引号   history 错误重定向 2>&1  jobs  环境变量 .bash_history  source配置文件 ...

  3. 一键前端代理,一行命令开启nginx容器,代理前端页面

    我们在前端开发的过程中,在对接口时候,往往需要跨域请求,那么及其简便的方法就是使用nginx反向代理,但是存在几点缺点 1.在新的一个项目下,我们需要找到安装nginx目录的nginx.conf文件并 ...

  4. golang常用库:cli命令行/应用程序生成工具-cobra使用

    golang常用库:cli命令行/应用程序生成工具-cobra使用 一.Cobra 介绍 我前面有一篇文章介绍了配置文件解析库 Viper 的使用,这篇介绍 Cobra 的使用,你猜的没错,这 2 个 ...

  5. 一行命令搞定node.js 版本升级

    from:http://www.16boke.com/article/detail/26 今天,又发现一个超级简单的升级node.js的方法.一行命令搞定,省去了重新编译安装的过程. node有一个模 ...

  6. 一行命令搞定VS2012无法安装cocos2d-x-2.1.4及创建跨平台项目(二)

    转自:http://blog.csdn.net/yangjingui/article/details/9418843 由于上次发了一个比较二的方法来解决VS2012无法安装cocos2d-x-2.1. ...

  7. 【实习记】2014-09-01从复杂到简单:一行命令区间查重+长整型在awk中的bug

        9月1号,导出sql文件后,想到了awk,但很复杂.想到了用sed前期处理+python排序比较的区间查重法.编写加调试用了约3小时. 9月2号,编写C代码的sql语句过程中,发现排序可以交m ...

  8. 创建并使用静态库(ar 命令)

     创建并使用静态库(ar 命令)            archive命令的功能是:创建或改动归档文件或者从归档文件里析取信息.能够简单的理解为一个打包工具,将成员文件依照一定的规则构建到.a文件里, ...

  9. 一行命令创建 http-server

    一行命令启动http-server总结:1. python2.xpython2 -m SimpleHTTPServer 8000 2. python3.xpython -m http.server 8 ...

随机推荐

  1. .NET 跨平台应用开发动手教程 |用 Uno Platform 构建一个 Kanban-style Todo App

    作者:Steven Giesel 翻译:Alan Wang 校对:李卫涵 – 微软 MVP 排版:Rani Sun 有什么比参考包含分步说明和代码示例的动手教程更好的学习新技术的方式呢?当你完成或 f ...

  2. 利用Docker挂载Nginx-rtmp(服务器直播流分发)+FFmpeg(推流)+Vue.js结合Video.js(播放器流播放)来实现实时网络直播

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_75 众所周知,在视频直播领域,有不同的商家提供各种的商业解决方案,其中比较靠谱的服务商有阿里云直播,腾讯云直播,以及又拍云和网易云 ...

  3. Nginx api接口调用配置

    1 # Nginx api接口调用配置 2 3 # 什么是跨域同源? 4 # 同源策略:协议(http.https.wss--)+域名+端口=一个完整的网站 5 # 跨域:当前所在的网站post(ge ...

  4. 一文搞懂│php 中的 DI 依赖注入

    目录 什么是 DI / 依赖注入 依赖注入出现的原因 简单的依赖注入 高阶的依赖注入 依赖注入的应用 依赖注入高阶优化 什么是 DI / 依赖注入 依赖注入DI 其实本质上是指对类的依赖通过构造器完成 ...

  5. 技术分享 | MySQL中MGR中SECONDARY节点磁盘满,导致mysqld进程被OOM Killed

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 在MGR测试中,人为制造磁盘满问题后,节点被oom killed 问题描述 在对 ...

  6. 《DevOps围炉夜话》- Pilot - CNCF开源DevOps项目DevStream简介 - feat. PMC成员胡涛

    本文作者:aFlyBird0 个人主页:https://blog.aflybird.cn/ 开门见山 这是<DevOps围炉夜话>系列节目的第一期.在这期首秀中,我们邀请到了 DevStr ...

  7. Linux 域名和DNS

    名字解析的作用: TCP/IP网络中,设备之间的通信依赖IP地址来实现,但是IP地址不好记忆,所以就将每一台设备用一个名字来进行标识,但是这个名字计算机不能解析.所以就需要借助名字解析服务来实现将名字 ...

  8. ESP32与MicroPython入门-01 搭建开发环境

    ESP32简介 ESP32 是上海乐鑫公司开发的一款比较新的32位微控制器,它集成了WiFi及蓝牙等功能,有着性能稳定.功耗低.价格低廉等特点,非常适用于物联网开发,但也可以作为普通的MCU使用. E ...

  9. Redis架构之哨兵机制与集群

    Redis架构之哨兵机制与集群 哨兵机制 1.介绍: Sentinel(哨兵)是redis高可用性解决方案:由一个或多个由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个 ...

  10. 888. 公平的糖果交换--LeetCode

    来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/fair-candy-swap 著作权归领扣网络所有.商业转载请联系官方授权,非商业转载请注明出处. 假 ...