yr.wait

Contents

yr.wait#

yr.wait(obj_refs: ObjectRef | List[ObjectRef], wait_num: int = 1, timeout: int | None = None) Tuple[List[ObjectRef], List[ObjectRef]]#

根据对象的 key 等待数据系统中对象的值准备好。接口调用后会阻塞,直到对象的值计算完成。

Note

每次返回的结果可能不同,因为 invoke 完成先后顺序不确定。

参数:
  • obj_refs (list) - 保存到数据系统的数据。

  • wait_num (int,可选) - 至少需要等待的数量。默认为 1。取值需不大于 len(object_refs)。

  • timeout (int,可选) - 超时时间,单位:秒。需注意,如果取默认值 None,则会一直等待,实际最大等待时间受限于 get 中的等待因素。

返回:

返回两个列表:第一个列表包含已经完成的请求;第二个列表包含未完成的请求。 数据类型:tuple[list, list]。

异常:
  • TypeError - 如果参数类型传入错误。

  • ValueError - 如果参数传入错误。

样例:
>>> import yr
>>> import time
>>>
>>> yr.init()
>>>
>>> @yr.invoke
... def demo(a):
...     time.sleep(a)
...     return "sleep:", a
...
>>> res = [demo.invoke(i) for i in range(4)]
>>>
>>> wait_num = 3
>>> timeout = 10
>>> result = yr.wait(res, wait_num, timeout)
>>> print("ready_list  = ", result[0], "unready_list = ", result[1])
ready_list  =  [ObjectRef(...), ObjectRef(...)] unready_list =  [ObjectRef(...)]
>>> print(yr.get(result[0]))
[('sleep:', 0), ('sleep:', 1)]
>>>
>>> yr.finalize()