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 分布式计算的所有主要功能,从基本的任务提交到高级的集群管理和监控。用户可以根据具体需求选择合适的方法来操作分布式集群。

相关推荐
小小放舟、11 分钟前
VS Code Code Runner 中文乱码修复与 IDEA 风格输出配置
vscode·python·code runner
无忧智库17 分钟前
数据安全与数据合规体系建设规划:从“合规应付”到“数据可控、可用、可审计”的落地指南(PPT)
大数据·人工智能·安全
玩美数据24 分钟前
2026全球出海市场研究TOP5:深度行业洞察与高效供应商网络塑造市场竞争力
大数据·人工智能
qq_5434478225 分钟前
等保合规服务商哪家好?
大数据
2501_9481069129 分钟前
计算机毕业设计之jsp物业管理系统
java·大数据·开发语言·汽车·课程设计
中科岩创31 分钟前
全栈本地化专属部署架构,服务智慧矿山信息化安全建设!
大数据·人工智能·物联网
TDengine (老段)38 分钟前
TDengine 索引使用指南 — 何时建、怎么建、怎么用
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
TDengine (老段)1 小时前
TDengine DDL 完整参考 — Database/STable/Table/Column/Tag
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
石像鬼₧魂石1 小时前
【Y2Ksoft】贵阳陈桥饭店ERP管理系统
大数据·前端·物联网·html·数据库架构
俺不中嘞1 小时前
python常用函数
开发语言·python