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

相关推荐
eqwaak06 小时前
Matplotlib 动态显示详解:技术深度与创新思考
网络·python·网络协议·tcp/ip·语言模型·matplotlib
007php0077 小时前
某大厂MySQL面试之SQL注入触点发现与SQLMap测试
数据库·python·sql·mysql·面试·职场和发展·golang
CodeCraft Studio7 小时前
Excel处理控件Aspose.Cells教程:使用 Python 将 Pandas DataFrame 转换为 Excel
python·json·excel·pandas·csv·aspose·dataframe
flashlight_hi7 小时前
LeetCode 分类刷题:2563. 统计公平数对的数目
python·算法·leetcode
java1234_小锋7 小时前
Scikit-learn Python机器学习 - 特征预处理 - 归一化 (Normalization):MinMaxScaler
python·机器学习·scikit-learn
星空的资源小屋7 小时前
网易UU远程,免费电脑远程控制软件
人工智能·python·pdf·电脑
IMER SIMPLE7 小时前
人工智能-python-深度学习-神经网络-MobileNet V1&V2
人工智能·python·深度学习
eleqi7 小时前
Python+DRVT 从外部调用 Revit:批量创建楼板
python·系统集成·revit·外部调用·drvt·自动化生产流水线
字节数据平台8 小时前
一客一策:Data Agent 如何重构大模型时代的智能营销
大数据·人工智能·重构