3

我想知道 - 有没有一种简单的方法可以在退出之前等待所有任务完成运行而不跟踪所有ObjectIDs (和get()他们)?用例是当我启动@remotes 以保存输出时,例如,不需要返回结果。如果我必须存储这些期货,这只是额外的东西。

4

1 回答 1

0

目前,在所有任务完成之前没有标准的阻塞方式。

有一些解决方法可以使用。

  1. 跟踪列表中的所有对象 ID,object_ids然后调用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)
    

    上面的代码将循环,直到它检测到当前没有任务正在执行。然而,这不是万无一失的方法。可能有一段时间没有任务正在运行,但调度程序任务即将开始运行。

于 2019-02-08T05:59:00.297 回答