我想知道-是否有一种直接的方法可以等待所有任务完成运行再退出,而无需跟踪所有ObjectID
(和get()
)?用例是当我启动@remote
来保存输出时,例如,不需要返回结果的情况。如果需要存储这些期货,这只是多余的东西。
答案 0 :(得分:0)
当前,没有标准的方法可以阻止所有任务完成。
可以使用一些解决方法。
跟踪列表object_ids
中的所有对象ID,然后调用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)
上面的代码将一直循环直到它检测到当前没有正在执行的任务。但是,这不是万无一失的方法。