面对计算密集型的任务,除了多进程,就是分布式计算,如何用 Python 实现分布式计算呢?今天分享一个很简单的方法,那就是借助于 Ray。
什么是 Ray
Ray 是基于 Python 的分布式计算框架,采用动态图计算模型,提供简单、通用的 API 来创建分布式应用。使用起来很方便,你可以通过装饰器的方式,仅需修改极少的的代码,让原本运行在单机的 Python 代码轻松实现分布式计算,目前多用于机器学习。
Ray 的特色:
1、提供用于构建和运行分布式应用程序的简单原语。
2、使用户能够并行化单机代码,代码更改很少甚至为零。
3、Ray Core 包括一个由应用程序、库和工具组成的大型生态系统,以支持复杂的应用程序。比如 Tune、RLlib、RaySGD、Serve、Datasets、Workflows。
安装 Ray
最简单的安装官方版本的方式:
pip install -U ray
pip install 'ray[default]'
如果是 Windows 系统,要求必须安装 Visual C++ runtime
其他安装方式见官方文档。
使用 Ray
一个装饰器就搞定分布式计算:
import ray
ray.init()
@ray.remote
def f(x):
return x * x
futures = [f.remote(i) for i in range(4)]
print(ray.get(futures)) # [0, 1, 4, 9]