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"))
相关推荐
weixin_7503302341 分钟前
AI获客工具选型:从技术架构看中小企业效率提升方案
大数据·人工智能·架构·ai获客
mpp0072 小时前
36氪《2026 中国 AI Agent 行业发展报告》:当 Agent 进入「交付」主战场
大数据·人工智能
databook4 小时前
使用 SciPy 库进行时间序列分析
python·数据分析·scipy
java资料站4 小时前
十一、评估测试
开发语言·人工智能·python
szial4 小时前
网络爬虫与 CDP 实战(二):浏览器能访问,Python 却被拒绝?拆开登录态与 CSRF
爬虫·python·csrf
johnsong5 小时前
当决策成为免费商品:思维成本崩溃背后的治理真空
大数据·人工智能
青少儿编程课堂5 小时前
后缀自动机解析:本质不同子串与最长重复片段统计
c++·python·算法·bfs·信息学竞赛
怕浪猫6 小时前
LLM 面试必问的 8 个问题,答不上来直接淘汰
人工智能·python·面试
数字新视界6 小时前
动环监控系统优化数据中心管理,提升环境监测与安全效率
大数据·人工智能·数据中心·微模块机房·模块化机房
zhenaibo5216 小时前
如何向导师请教问题,才能得到有效建议?
大数据·人工智能·深度学习