ray.取消#

ray.cancel(ray_waitable: ray._raylet.ObjectRef.~R | ray._raylet.ObjectRefGenerator.~R, *, force: bool = False, recursive: bool = True) None[源代码]#

取消一个任务。

取消API的行为取决于它是远程函数(任务)还是远程Actor方法(Actor任务)。

任务:

如果指定的任务正在等待执行,它将被取消且不会执行。如果任务当前正在执行,行为取决于 force 标志。当 force=False 时,Python 中会引发 KeyboardInterrupt,而当 force=True 时,正在执行的任务会立即退出。如果任务已经完成,则不会发生任何事情。

已取消的任务不会重试。max_task_retries 不会被遵守。

如果在任务已调度或中断后调用 ray.get,则会引发 TaskCancelledError。如果 force=True,则会引发 WorkerCrashedError。

如果 recursive=True,所有子任务和演员任务都会被取消。如果 force=Truerecursive=Trueforce=True 对子演员任务将被忽略。

演员任务:

如果指定的任务正在等待执行,它将被取消且不会执行。如果任务当前正在执行,行为取决于Actor的执行模型。如果是常规Actor或线程化Actor,执行不会被取消。Actor任务不能被中断,因为Actor具有状态。如果是异步Actor,Ray会取消一个`asyncio.Task`。取消的语义等同于asyncio的取消。https://docs.python.org/3/library/asyncio-task.html#task-cancellation 如果任务已经完成,则不会发生任何事情。

仅允许 force=False 用于 Actor 任务。否则,会引发 ValueError。请改用 ray.kill(actor) 来终止 Actor。

已取消的任务不会重试。max_task_retries 不会被遵守。

如果在任务被调度或中断后调用 ray.get,则会引发 TaskCancelledError。另请注意,只有异步 actor 任务可以被中断。

如果 recursive=True,所有子任务和演员任务都将被取消。

参数:
  • ray_waitableObjectRefObjectRefGenerator 是由应取消的任务返回的。

  • force – 是否通过杀死正在运行任务的工作进程来强制终止运行中的任务。

  • recursive – 是否尝试取消由指定任务提交的任务。