退出前等待所有任务完成的标准方法
Standard way to wait for all tasks to finish before exiting
我想知道 - 有没有一种直接的方法可以等待所有任务完成 运行 然后退出而不跟踪所有 ObjectID
(和 get()
ing 它们) ?用例是当我启动 @remote
s 以保存输出时,例如,在不需要 return 结果的情况下。如果我必须存储这些期货,这只是额外的东西来跟踪。
目前没有标准的方法来阻止所有任务完成。
有一些解决方法可以使用。
跟踪列表中的所有对象 ID object_ids
,然后调用 ray.get(object_ids)
或 ray.wait(object_ids, num_returns=len(object_ids))
。
只要一些资源被使用就循环。
import time
while (ray.global_state.cluster_resources() !=
ray.global_state.available_resources()):
time.sleep(1)
以上代码会一直循环,直到检测到当前没有任何任务在执行。然而,这不是万无一失的方法。可能有一段时间没有任务 运行 但调度程序任务即将开始 运行.
我想知道 - 有没有一种直接的方法可以等待所有任务完成 运行 然后退出而不跟踪所有 ObjectID
(和 get()
ing 它们) ?用例是当我启动 @remote
s 以保存输出时,例如,在不需要 return 结果的情况下。如果我必须存储这些期货,这只是额外的东西来跟踪。
目前没有标准的方法来阻止所有任务完成。
有一些解决方法可以使用。
跟踪列表中的所有对象 ID
object_ids
,然后调用ray.get(object_ids)
或ray.wait(object_ids, num_returns=len(object_ids))
。只要一些资源被使用就循环。
import time while (ray.global_state.cluster_resources() != ray.global_state.available_resources()): time.sleep(1)
以上代码会一直循环,直到检测到当前没有任何任务在执行。然而,这不是万无一失的方法。可能有一段时间没有任务 运行 但调度程序任务即将开始 运行.