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