#!/usr/bin/env python3
# encoding: utf-8
"""Demonstration of Ray parallelism"""
import ray
from typing import Iterator
ray.init()
@ray.remote
def square(n:int)->int:
return n*n
references: Iterator[ray.ObjectRef] = map(lambda val: square.remote(val),
range(10))
ray.get([*references])
ray.shutdown()
基本上,只不过是由 Ray 驱动的
map(square, range(10))
的一种形式。
对于这样一个标准且通用的模式,上面的操作显得过于冗长。那么 ray 是否提供任何 API 来公开更具声明性/功能性的接口来获得上述结果?除了地图之外,最好还提供某种过滤、减少等功能。
Ray 确实提供了一种更方便、更实用的方法来将远程函数应用于可迭代对象。它提供 ray.data.from_items 以及 ray.data.from_items.map API。