distributed.client.Client 用户可调用函数分析

distributed.client.Client 用户可调用函数分析

1. 核心计算函数

任务提交和执行
  • submit(func, *args, key=None, workers=None, resources=None, retries=None, priority=0, fifo_timeout='60s', allow_other_workers=False, actor=False, actors=False, pure=None, **kwargs)

    • 提交单个函数到集群执行
    • 返回 Future 对象
  • map(func, *iterables, key=None, workers=None, retries=None, priority=0, allow_other_workers=False, fifo_timeout='60s', batch_size=None, **kwargs)

    • 将函数映射到多个输入上
    • 类似 Python 的 map 函数
  • compute(collections, optimize_graph=True, **kwargs)

    • 计算 Dask 集合(如 DataFrame, Array 等)
    • 触发实际的计算执行
  • persist(collections, optimize_graph=True, **kwargs)

    • 将集合持久化到分布式内存中
    • 返回新的集合,数据保留在集群中
  • get(dsk, keys, **kwargs)

    • 执行 Dask 图并获取结果
    • 底层计算接口

2. 数据管理函数

数据分发和收集
  • scatter(data, workers=None, broadcast=False, timeout=None, hash=True, **kwargs)

    • 将本地数据分发到集群的 workers
    • 支持广播模式
  • gather(futures, errors='raise', direct=None, asynchronous=None)

    • 从分布式内存中收集 Future 结果
    • 将远程数据拉取到本地
数据集管理
  • publish_dataset(*args, **kwargs)

    • 发布命名数据集到调度器
    • 使数据在集群中可被其他客户端访问
  • unpublish_dataset(name, **kwargs)

    • 从调度器移除命名数据集
  • list_datasets(**kwargs)

    • 列出调度器上可用的命名数据集
  • get_dataset(name, default=NO_DEFAULT_PLACEHOLDER, **kwargs)

    • 从调度器获取命名数据集

3. 任务控制函数

任务生命周期管理
  • cancel(futures, asynchronous=None, force=False)

    • 取消正在运行的任务
    • 支持强制取消
  • retry(futures, asynchronous=None)

    • 重试失败的任务
  • restart(**kwargs)

    • 重启分布式网络
    • 清理并重新初始化集群

4. 集群管理函数

集群操作
  • close(timeout=no_default)

    • 关闭客户端连接
    • 清理资源
  • shutdown()

    • 关闭连接的调度器和 workers
    • 完全关闭集群
  • wait_for_workers(n_workers=0, timeout=None)

    • 等待指定数量的 workers 启动
    • 阻塞调用
集群信息查询
  • scheduler_info(**kwargs)

    • 获取集群中 workers 的基本信息
  • nthreads(workers=None, **kwargs)

    • 获取每个 worker 节点的线程/核心数
  • who_has(futures=None, **kwargs)

    • 查询存储每个 future 数据的 workers
  • has_what(workers=None, **kwargs)

    • 查询每个 worker 持有的键
  • processing(workers=None)

    • 查询每个 worker 当前运行的任务
  • nbytes(keys=None, summary=True, **kwargs)

    • 查询集群中每个键占用的字节数

5. 监控和诊断函数

性能监控
  • profile(start=None, stop=None, plot=False, filename=None, server=False, scheduler=False, workers=None, merge_workers=True, plot_width=700, plot_height=300, **kwargs)

    • 性能分析和可视化
    • 生成性能报告
  • call_stack(futures=None, keys=None)

    • 获取相关键的活跃调用栈
日志和事件
  • get_scheduler_logs(n=None)

    • 获取调度器日志
  • get_worker_logs(n=None, workers=None, nanny=False)

    • 获取 workers 日志
  • log_event(topic, msg)

    • 在指定主题下记录事件
  • get_events(topic: str = None)

    • 检索结构化主题日志

6. 数据优化函数

数据重新分布
  • rebalance(futures=None, workers=None, **kwargs)

    • 在集群中重新平衡数据
    • 优化数据分布
  • replicate(futures, n=None, workers=None, branching_factor=2, **kwargs)

    • 设置 futures 在集群中的复制
    • 提高容错性

7. 工具函数

实用工具
  • get_executor(**kwargs)

    • 返回用于在此客户端上提交任务的 concurrent.futures Executor
  • normalize_collection(collection)

    • 用已存在的 futures 替换集合的任务
  • futures_of(futures)

    • 从输入中提取 Future 对象
  • write_scheduler_file(scheduler_file)

    • 将调度器信息写入 JSON 文件
元数据管理
  • get_metadata(keys, default=no_default)

    • 从调度器获取任意元数据
  • set_metadata(key, value)

    • 在调度器中设置任意元数据
版本信息
  • get_versions(check=False, packages=[])
    • 返回调度器、所有 workers 和客户端的版本信息

8. 特殊执行函数

在特定位置执行
  • run_on_scheduler(function, *args, **kwargs)

    • 在调度器进程上运行函数
  • run(function, *args, **kwargs)

    • 在所有 workers 上运行函数(在任务调度系统外)
  • run_coroutine(function, *args, **kwargs)

    • 在所有 workers 上生成协程

9. 开发工具函数

IPython 集成
  • start_ipython_workers(workers=None, magic_names=False, qtconsole=False, qtconsole_args=None)

    • 在 workers 上启动 IPython 会话
  • start_ipython_scheduler(magic_name="scheduler_if_ipython", qtconsole=False, qtconsole_args=None)

    • 在调度器上启动 IPython 会话

10. 文件管理函数

  • upload_file(filename, **kwargs)
    • 上传本地包到 workers

11. 上下文管理

  • as_current()

    • 线程本地、任务本地上下文管理器
    • 使 Client.current 类方法返回当前客户端
  • current(cls, allow_global=True)

    • 类方法,返回当前上下文中的客户端

12. 状态查询函数

  • asynchronous()

    • 查询是否在事件循环中运行
  • dashboard_link()

    • 获取集群仪表板链接

这些函数涵盖了 Dask 分布式计算的所有主要功能,从基本的任务提交到高级的集群管理和监控。用户可以根据具体需求选择合适的方法来操作分布式集群。

相关推荐
Elastic 中国社区官方博客3 分钟前
如何在 vscode 里配置 MCP 并连接到 Elasticsearch
大数据·人工智能·vscode·elasticsearch·搜索引擎·ai·mcp
AI视觉网奇18 分钟前
vscode 不能跳转 ERR_OSSL_EVP_BAD_DECRYPT
python
文心快码BaiduComate34 分钟前
Comate分饰多角:全栈开发一个Python学习网站
前端·后端·python
雨声不在35 分钟前
cronet从编译到修改之: 支持IP直连
python·网络协议·tcp/ip·cronet
2401_8414956443 分钟前
【机器学习】朴素贝叶斯法
人工智能·python·数学·算法·机器学习·概率论·朴素贝叶斯法
听潮阁44 分钟前
Python 旅游数据分析平台【源码请评论区留言】
python·数据分析·旅游
付玉祥44 分钟前
第 2 章 变量与基本数据类型
python·llm
扑克中的黑桃A1 小时前
Python快速入门专业版(八):字符串基础:创建、拼接与切片(10+实用代码案例)
python
时间醉酒1 小时前
逻辑回归(四):从原理到实战-训练,评估与应用指南
人工智能·python·算法·机器学习·逻辑回归
计算机毕设残哥2 小时前
紧跟大数据技术趋势:食物口味分析系统Spark SQL+HDFS最新架构实现
大数据·hadoop·python·sql·hdfs·架构·spark