当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python distributed.scheduler.Scheduler用法及代码示例


用法:

class distributed.scheduler.Scheduler(loop=None, delete_interval='500ms', synchronize_worker_interval='60s', services=None, service_kwargs=None, allowed_failures=None, extensions=None, validate=None, scheduler_file=None, security=None, worker_ttl=None, idle_timeout=None, interface=None, host=None, port=0, protocol=None, dashboard_address=None, dashboard=None, http_prefix='/', preload=None, preload_argv=(), plugins=(), **kwargs)

动态分布式任务调度器

调度程序跟踪工作人员、数据和计算的当前状态。调度程序监听事件并通过适当地控制工作人员来响应。它不断尝试使用工作人员来执行不断增长的 dask 图。

所有事件都被快速处理,在相对于它们的输入(通常是恒定大小)的线性时间内,通常在一毫秒内。为了实现这一点,调度程序会跟踪很多状态。每个操作都保持这个状态的一致性。

调度器通过 Comm 对象与外界通信。即使同时聆听多个客户,它也能保持一致且有效的世界观。

调度程序通常使用 dask-scheduler 可执行文件启动:

$ dask-scheduler
Scheduler started at 127.0.0.1:8786

或者在 LocalCluster 中,客户端在没有连接信息的情况下启动:

>>> c = Client()  
>>> c.cluster.scheduler  
Scheduler(...)

用户通常不直接与调度程序交互,而是与客户端对象 Client 交互。

状态

调度程序包含以下状态变量。列出了每个变量及其存储的内容和简要说明。

  • 任务: {task key: TaskState}

    调度程序当前已知的任务

  • 无法运行: {TaskState}

    “no-worker” 状态下的任务

  • 工作人员: {worker key: WorkerState}

    当前连接到调度程序的工作人员

  • 闲置的: {WorkerState}

    未充分利用的一组工人

  • 饱和: {WorkerState}

    一组不是over-utilized的工人

  • host_info: {hostname: dict}

    有关每个工作程序主机的信息

  • 客户: {client key: ClientState}

    当前连接到调度程序的客户端

  • 服务: {str: port}

    在此调度程序上运行的其他服务,例如 Bokeh

  • 环形: IOLoop

    正在运行的 Tornado IOLoop

  • client_comms: {client key: Comm}

    对于每个客户端,一个用于接收任务请求和报告任务状态更新的 Comm 对象。

  • stream_comms: {worker key: Comm}

    对于每个工人,我们都接受刺激并报告结果的 Comm 对象

  • task_duration: {key-prefix: time}

    我们期望某些函数花费的时间,例如{'sum': 0.25}

相关用法


注:本文由纯净天空筛选整理自dask.org大神的英文原创作品 distributed.scheduler.Scheduler。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。