Shortcuts

框架任务

任务

任务

class ding.framework.task.Task[源代码]

任务将管理整个管道的执行顺序,注册新的中间件,并生成新的上下文对象。

backward(backward_stack: Dict[str, Generator] | None = None) None[source]
Overview:

按照注册的相反顺序执行中间件的剩余部分。

Arguments:
  • backward_stack (Optional[Dict[str, Generator]]): 用自定义的堆栈替换全局的backward_stack。

emit(event: str, *args, only_remote: bool = False, only_local: bool = False, **kwargs) None[source]
Overview:

发出一个事件,调用监听器。

Arguments:
  • 事件 (str): 事件名称。

  • only_remote (bool): 仅将事件广播到连接的节点,默认值为 False。

  • only_local (bool): 仅发出本地事件,默认为 False。

  • args (any): 监听器的其余参数。

forward(fn: Callable, ctx: Context | None = None) Generator | None[source]
Overview:

此函数将执行中间件,直到第一个 yield 语句或中间件结束。

Arguments:
  • fn (Callable): 包含中间件中ctx参数的函数。

  • ctx (Optional[Context]): 用自定义的ctx替换全局ctx。

Returns:
  • g (Optional[Generator]): 如果fn的返回值是一个生成器,则该参数为生成器。

match_labels(patterns: Iterable[str] | str) bool[source]
Overview:

用于匹配标签的模式列表。

Arguments:
  • 模式 (Union[Iterable[str], str]): 类似Glob的模式,例如 node.1, node.*。

on(event: str, fn: Callable) None[source]
Overview:

订阅一个事件,每次事件触发时执行此函数。

Arguments:
  • 事件 (str): 事件名称。

  • fn (Callable): 函数。

once(event: str, fn: Callable) None[source]
Overview:

订阅一个事件,当事件被触发时只执行一次此函数。

Arguments:
  • 事件 (str): 事件名称。

  • fn (Callable): 函数。

parallel(*fns: List[Callable]) Callable[source]
Overview:

包装函数并保持它们并行运行,不应在异步模式下使用此函数。

Arguments:
  • fn (Callable): 并行化的中间件,将它们包装成一个中间件函数。

renew() Task[source]
Overview:

更新上下文实例,此函数应在迭代结束时在反向传播后调用。

run(max_step: int = 1000000000000) None[source]
Overview:

执行迭代,当达到最大步数或task.finish为真时,循环将中断。

Arguments:
  • max_step (int): 最大迭代步数。

serial(*fns: List[Callable]) Callable[source]
Overview:

包装函数并保持它们按顺序运行,通常是为了避免在异步模式下依赖关系的混乱。

Arguments:
  • fn (Callable): 将一系列中间件链接起来,将它们包装成一个中间件函数。

stop() None[source]
Overview:

停止并清理任务运行时中的所有内容。

use(fn: Callable, lock: bool | allocate_lock = False) Task[source]
Overview:

将中间件注册到任务中。中间件将按其注册顺序执行。

Arguments:
  • fn (Callable): 中间件是一个只有一个参数的函数:ctx。

  • lock (Union[bool, Lock]): 在任何时候,只能有一个中间件在锁下执行。

Returns:
  • 任务 (Task): 任务。

use_wrapper(fn: Callable) Task[source]
Overview:

注册包装器到任务。包装器的工作方式类似于装饰器,但任务将在每个中间件的顶部应用此装饰器。

Arguments:
  • fn (Callable): 包装器是一个装饰器,所以第一个参数是一个可调用的函数。

Returns:
  • 任务 (Task): 任务。

wait_for(event: str, timeout: float = inf, ignore_timeout_exception: bool = True) Any[source]
Overview:

等待一个事件并阻塞线程。

Arguments:
  • 事件 (str): 事件名称。

  • 超时时间 (float): 以秒为单位的超时时间。

  • ignore_timeout_exception (bool): 如果为False,遇到超时将会发生异常。

wrap(fn: Callable, lock: bool | allocate_lock = False) Callable[source]
Overview:

包装中间件,使其可以直接在其他中间件中调用。

Arguments:
  • fn (Callable): 中间件。

  • lock (Union[bool, Lock]): 在任何时候,只能有一个中间件在锁下执行。

Returns:
  • fn_back (Callable): It will return a backward function, which will call the rest part of

    yield 之后的中间件。如果未调用此 backward 函数,中间件的其余部分将在全局 backward 步骤中被调用。