Python Ray - await queue.get_async(block=True, timeout=None) 的解释

Python Ray - explanation of await queue.get_async(block=True, timeout=None)

提问人:mon 提问时间:11/4/2023 更新时间:11/4/2023 访问量:26

问:

Ray.util.queue.Queue.get_async有论据。在我的理解中,为什么异步方法块作为异步意味着返回而不阻塞。block

在用户指南中寻找解释,但到目前为止没有找到线索。

Python 异步 射线

评论


答:

1赞 Sergius 11/4/2023 #1

来自 https://docs.ray.io/en/latest/_modules/ray/util/queue.html#Queue.get_async 的 AFAYU(此外,我在该代码库中深入研究了一点),我得出的结论是:

  1. 是的,async 意味着非阻塞,但这个“块”参数还有另一个目的;
  2. 如果使用 block 并且 queue 为空,它将等到队列中出现某些内容或超出超时
  3. 如果您不使用 block,那么即使队列中没有任何内容,它也会立即返回(在这种情况下会引发 en 异常)。

所以,基本上,就是这样。