Dask 配置文件加载机制说明

Dask 配置文件加载机制说明

https://docs.dask.org/en/stable/configuration.html

源码位置

Dask 的配置文件解析源码在:

  • 主文件 : dask/config.py
  • 关键函数 :
    • _get_paths() (第21-39行): 定义配置文件搜索路径
    • collect_yaml() (第209-244行): 收集并解析 YAML/JSON 文件
    • collect() (第499-523行): 合并所有配置源
    • refresh() (第526-563行): 加载配置到全局 config 字典
    • _load_config_file() (第175-194行): 实际解析 YAML 文件的函数

默认搜索路径

根据 _get_paths() 函数,Dask 会按顺序搜索以下路径:

  1. DASK_ROOT_CONFIG 环境变量(默认: /etc/dask
  2. sys.prefix/etc/dask(虚拟环境的 etc/dask 目录)
  3. site.PREFIXES 中每个前缀的 etc/dask 目录
  4. ~/.config/dask(用户配置目录)
  5. DASK_CONFIG 环境变量指定的路径(如果设置了)

注意: 项目根目录默认不在搜索路径中!

如何让根目录的配置文件生效

方法1: 使用环境变量(推荐)

设置 DASK_CONFIG 环境变量指向项目根目录或配置文件:

bash 复制代码
# Windows PowerShell
$env:DASK_CONFIG = "D:\prj_py\dask-demo"

# 或者在代码中设置
import os
os.environ["DASK_CONFIG"] = r"D:\prj_py\dask-demo"

方法2: 在代码中手动加载

python 复制代码
import dask.config
import os

# 获取项目根目录
project_root = os.path.dirname(os.path.abspath(__file__))

# 手动刷新配置,包含项目根目录
dask.config.refresh(paths=[project_root])

# 或者直接指定配置文件路径
dask.config.refresh(paths=[os.path.join(project_root, "dask_cluster_config.yaml")])

方法3: 将配置文件放到标准位置

dask_cluster_config.yaml 放到 ~/.config/dask/ 目录:

python 复制代码
import os
import shutil

config_dir = os.path.expanduser("~/.config/dask")
os.makedirs(config_dir, exist_ok=True)
shutil.copy("dask_cluster_config.yaml", config_dir)

配置文件格式

配置文件可以是 YAML 或 JSON 格式,必须是顶层为字典的结构:

yaml 复制代码
# dask_cluster_config.yaml
distributed:
  scheduler:
    dashboard:
      default: :8787
  worker:
    memory:
      target: 0.8
      spill: 0.9
    threads: 4

dataframe:
  shuffle:
    method: p2p

验证配置是否加载

python 复制代码
import dask.config

# 查看所有搜索路径
print("搜索路径:", dask.config.paths)

# 查看当前配置
print("当前配置:", dask.config.config)

# 获取特定配置项
print(dask.config.get("distributed.worker.threads"))
相关推荐
ZhengEnCi10 小时前
P2M-Matplotlib折线图完全指南-从数据可视化到趋势分析的Python绘图利器
python·matlab·数据可视化
ZhengEnCi12 小时前
P2L-Matplotlib饼图完全指南-从数据可视化到图表定制的Python绘图利器
python·matlab
曲幽12 小时前
你的REST接口还在“过度投喂”数据吗?——FastAPI + GraphQL实战避坑指南
python·fastapi·web·graphql·route·cors·rest·strawberry
用户83580861879113 小时前
基于 Self-RAG 与列表级重排序的进阶 RAG 系统设计与实现
python
Warson_L1 天前
Python `Annotated` 与 LangGraph Reducer 学习笔记
python
韩师傅1 天前
海天线算法的前世今生
python·计算机视觉
大大大大晴天1 天前
Hudi Metadata Table 与 Hive Sync (HMS)怎么选?
大数据
韩师傅1 天前
当你的甲方设备过烂,要如何快速出效果?
python·计算机视觉
Warson_L1 天前
LangGraph的MessageState and HumanMessage
python
韩师傅1 天前
当你的甲方吐槽天空不够蓝,你应该如何应对
python·计算机视觉