退出之前等待所有任务完成的标准方式

时间:2019-02-07 23:06:51

标签: ray

我想知道-是否有一种直接的方法可以等待所有任务完成运行再退出,而无需跟踪所有ObjectID(和get())?用例是当我启动@remote来保存输出时,例如,不需要返回结果的情况。如果需要存储这些期货,这只是多余的东西。

1 个答案:

答案 0 :(得分:0)

当前,没有标准的方法可以阻止所有任务完成。

可以使用一些解决方法

  1. 跟踪列表object_ids中的所有对象ID,然后调用ray.get(object_ids)ray.wait(object_ids, num_returns=len(object_ids))

  2. 只要使用了一些资源,就循环。

    import time
    
    while (ray.global_state.cluster_resources() !=
           ray.global_state.available_resources()):
        time.sleep(1)
    

    上面的代码将一直循环直到它检测到当前没有正在执行的任务。但是,这不是万无一失的方法。