首页 > 其他分享 >【强烈推荐】用glob库的一行命令显著加速批量读取处理数据

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

时间:2022-10-15 20:45:31浏览次数:44  
标签:10 读取 140 glob file 强烈推荐 o3 ds

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

标签:10,读取,140,glob,file,强烈推荐,o3,ds
From: https://www.cnblogs.com/zxqxr/p/16794988.html

相关文章

  • 如何使用 pyqt 读取串口传输的图像
    前言这学期选修了嵌入式系统的课程,大作业选择的题目是人脸口罩检测。由于课程提供的开发板搭载的芯片是STM32F103ZET6,跑不动神经网络,所以打算将OV7725拍摄到的图像通过......
  • CookieContainer读取和保存
    publicvoidWriteCookiesToDisk(stringfile,CookieContainercookieJar){using(Streamstream=File.Create(file)){......
  • 解决方案-Global Namespace Files System
    距离最后一次写博客有多久了?哈,六年了。看来这几年真是太忙了。今天周五手头事情相对少一些,分享最近实施的一个文件系统方案。有趣的是客户诉求很简单,但挑战难度却很高。最终......
  • Codeforces Global Round 18 C
    C.Menorah显然对于每个操作我们是保留一个1所以我们当先是x个1的话做一次就是n+1-x个1并且我们只有这两种数量这样我们就可以特判无解了之后显然对于每两个操作我......
  • 使用Python同时读取和写入同一个文件
    前言在平时想要使用python修改文件部分内容的时候,常用的做法是使用open函数(默认模式为read)打开一个文件,然后关闭文件,然后再使用write模式去写入更新的内容,最后关闭。这......
  • springboot/spring使用ConfigurationProperties注解读取自定义属性(尚硅谷)
    pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xs......
  • 使用viper读取配置文件
    配置文件config.ymlmysql:type:mysqldsn:"user:pass@tcp(localhost:30306)/db_name?charset=utf8&parseTime=True&loc=Local"maxopen:100maxidle:10ma......
  • dedecms系统php.ini register_globals must is Off的解决方案
    访问后台,报错如下图:成因:由于register_globals设置控制PHP变量访问范围,如果开启会引起不必要的安全问题,所以这里对其进行了强制关闭,如果站长的空间不支持,可以采用以下几......
  • ADO.NET 如何读取 Excel (下)
    应用程序经常需要与Excel进行数据交互,在上一篇文章ADO.NET如何读取Excel(上)​阐述了基于ADO.NET读取Excel的基本方法与技巧。今天这里要介绍是如何动态的读取Excel数据,这......
  • 读取PLC时间转换为UNIX 时间做网络同步比较
    JZGKCHINA工控技术分享平台最近在安全行业里做读取PLC内部故障事件分析的工作,发现在PLC网络里采用NTP时间同步基本上没有,因为在工控领域PLC更多承担业务层面控制需求的实现,......