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=True
且recursive=True
,force=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_waitable –
ObjectRef
和ObjectRefGenerator
是由应取消的任务返回的。force – 是否通过杀死正在运行任务的工作进程来强制终止运行中的任务。
recursive – 是否尝试取消由指定任务提交的任务。