avatar

AngYi

Aim for the stars, and beyond.

  • 首页
  • 分类
  • 标签
  • 归档
  • 相册
  • 关于我
Home Dask 高效的Python并行计算库
文章

Dask 高效的Python并行计算库

Posted 2021-08-28 Updated 2023-10- 17
By AngYi
9~11 min read

Dask 高效的Python并行计算库

CxdPvE

官网【https://dask.org/】

官方文档 【https://docs.dask.org/】

没有学的很精通,也无法从小到大,由浅到深的讲解,所以记录一些使用场景吧,这种记录方式也挺实用的。

场景1. 读取较大的数据集

Dask有着丰富的读取数据的接口,而且接口与常用的   pandas  numpy 数据接口基本相同,非常容易上手。
由于专业关系,我最常用的数据格式为 netCDF ,通常需要借助 xarray 库进行读取保存等操作。但非常好的消息是 xarray 与 Dask 建立了十分友好的互帮互助,共同进步关系, xarray 有着非常方便的参数接口,不需要太多额外配置就能够直接使用 Dask .

# hycom 在线数据,TB级别,传入chunks分块参数,直接使用Dask能够秒级别导入
data_global = xr.open_dataset('http://tds.hycom.org/thredds/dodsC/GLBy0.08/expt_93.0',decode_times=False,chunks={"time":100})

# 如果是多个小文件,使用mfdataset,传入parallel并行参数,秒级别打开多个数据,并且能够按照某个维度整合
dataall = xr.open_mfdataset(url_exist,parallel = True,decode_times=False,combine='nested',concat_dim="time")

# 注意该函数对本地文件夹循环也非常好用
dataall = xr.open_mfdataset('data_all/*.nc',parallel=True)

场景2. 保存和下载数据

使用 save_mfdataset(filelist,paths) 并行保存数据。注意前提是数据为 dask 类型,否则相当于循环调用 to_netcdf() 。

import xarray as xr

data_global = xr.open_dataset('http://tds.hycom.org/thredds/dodsC/GLBy0.08/expt_93.0',decode_times=False,chunks={"time":100})

data_latest = data_global.sel(lat = slice(2,42),lon = slice(104,132),depth=slice(0,1001))

from datetime import datetime,timedelta
import pandas as pd
import numpy as np
def return_latest_time():
    date_start = '2000-01-01 00:00:00'
    date_list = []
    for i in data_latest.time.data:
        date_list.append(pd.to_datetime(date_start)+timedelta(hours = i))
    return date_list
date_list = return_latest_time()

data_latest['time'] = pd.to_datetime(date_list) # 重新更新文件时间

date_time = pd.to_datetime(date_list)

data_latest_now =[]
data_latest_path= []
for date in date_time:
    if (date.hour == 0 or date.hour == 12) and date.year>2019:
        data_latest_now.append(data_latest.sel(time = date))
        data_latest_path.append("/data/hycom_2020_latest/{}.nc".format(str(date)))
        print(date,"已完成!!!")         

xr.save_mfdataset(data_latest_now,data_latest) # 并行保存

#### 下载  一天两次 普通保存

# for date in date_time:
#     if date.hour == 0 or date.hour == 12 :
#         data_latest_now = data_latest.sel(time = date)
#         data_latest_now.to_netcdf("/data/hycom_2018_latest/{}.nc".format(str(date)))
#         print(date,"已完成!!!")       

场景3. Delay

delay 是先将运算搁置,等到 compute 的时候再进行计算,非常方便调试大数据程序。

场景3. Persist

persist 作用是将dask先进行一次运算,结果任然保持dask格式,后面的运算仍支持dask并行计算。

数据分析
python
License:  CC BY 4.0
Share

Further Reading

Apr 4, 2022

Matplotlib常用布局-代码仓库

Matplotlib常用布局-代码仓库行列组合# 2 行 4 列 fig,ax = plt.subplots(2,4,figsize=(12,18),dpi=250,sharey=True,sharex=False) # 第一行 第一列ax[0][0].plot(spring_result.sub_

Nov 7, 2021

CMIP6 海气耦合模型数据下载

Oct 15, 2021

数据处理与特征工程

推荐菜菜的sklearn完整版,价值4999元的最全机器学习这应该是我找到的最系统,最通俗易懂、实践性最强、教学讲解最好的网络课程,非常适用新手入门和回看复习。这里有部分课件(链接: https://pan.baidu.com/s/1AZ5h_uDKMBpxNvPIeASRBQ 提取码: osw8)

OLDER

安装Nvidia套件和Tensorflow环境

NEWER

常用数据下载方式

Recently Updated

  • DeepSeek 创始人梁文峰采访:创新、人才与中国 AI 发展
  • 福州-厦门之行
  • 我有自己的摄影网站啦
  • 借助Ollama一键本地部署CodeGeex,让AI帮你打工
  • Dash 进阶技巧

Trending Tags

ssh linux matlab 感悟 读书 blog git python flask ML

Contents

©2025 AngYi. Some rights reserved.

Using the Halo theme Chirpy