ray.util.ActorPool.map_unordered#

ActorPool.map_unordered(fn: Callable[[ActorHandle, V], Any], values: List[V])[源代码]#

类似于 map(),但返回一个无序的迭代器。

这将返回一个无序的迭代器,该迭代器将返回完成时映射的结果。如果某些结果的计算时间比其他结果长,这可能比 map() 更有效。

参数:
  • fn – 接受 (actor, value) 作为参数并返回一个 ObjectRef 计算结果的函数。在 ObjectRef 完成之前,actor 将被视为忙碌。

  • values – fn(actor, value) 应应用的值列表。

返回:

对应用了 fn 的演员和值的结果进行迭代。

示例

import ray
from ray.util.actor_pool import ActorPool

@ray.remote
class Actor:
    def double(self, v):
        return 2 * v

a1, a2 = Actor.remote(), Actor.remote()
pool = ActorPool([a1, a2])
print(list(pool.map_unordered(lambda a, v: a.double.remote(v),
                              [1, 2, 3, 4])))
[6, 8, 4, 2]