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"))
相关推荐
小玮看世界23 分钟前
[Python]从合并区间到传感器融合区:合并区间在传感器区域融合的实际落地
开发语言·python
Java陈序员38 分钟前
轻量运维面板!一款现代化的服务器控制面板工具!
运维·服务器·python·react.js·github
2601_962097361 小时前
1. 使用 C 或 C++ 扩展 Python
python·api·c·引用计数·扩展模块
Yanjun2i1 小时前
Agent学习记录五:Pydantic验证
人工智能·python·学习
AI_Auto1 小时前
架构视角看数字化转型|核心架构:大共享平台+小应用,从按需走向适变
大数据·人工智能·架构·制造
小蒋观天下2 小时前
社区AI智能摄像头完整选型指南
大数据·人工智能·安全·计算机视觉·语音识别·ai大模型
AI 思录2 小时前
Prompt 事故档案(八):日常表达被标为“待校准”,AI 的爹味语法从哪里来
大数据·人工智能·算法·prompt·用户体验·ai合规
月光船幽幽2 小时前
跨范式映射的稳定接口设计
人工智能·python·算法
杜大哥2 小时前
python程序:如何查看电脑【电池电量的剩余百分比】 和 【是否插入连接着充电器】?
开发语言·python
wuyk5552 小时前
Python网络爬虫入门到实战 第01章:爬虫到底是什么?原理、流程、合法性、风险全解析(零基础必看)
开发语言·爬虫·python