如何使用射线并行映射生成器?

问题描述

我想处理来自一个非常大的生成器的元素。但是,ray 似乎在映射开始之前将生成器转换为列表。有一个侧面约束,我想映射值的函数一个昂贵的初始化,因此我为它创建了一个类。输出的顺序无关紧要。

import time
import ray

@ray.remote
class MyWorker:
    def __init__(self):
        time.sleep(5)  # expensive init

    def work(self,d):
        return d

ray.init()
pool = ray.util.ActorPool([MyWorker.remote() for _ in range(8)])
many_values = (d for d in range(10 ** 10))
for output in pool.map_unordered(lambda a,v: a.work.remote(v),many_values):
    print(output)
ray.shutdown()

您如何将生成器中的值分配给工作器以提高利用率?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)