安装依赖:pip install -i https://mirrors.aliyun.com/pypi/simple/ 'ray[default]'
ray框架可以在几乎不改变现有代码的基础上实现分布式与并行计算!!改变的只有传值的方式,与每个函数加上装饰器即可
对于常规的循环任务
def exponentiation_test(a, b):
import time
time.sleep(1)
value = a ** b ** 3
return a, b
if __name__ == '__main__':
for value in range(100):
value += 3
print(exponentiation_test(value, value // 2))
使用多进程改写
这是针对上面的for循环改写的多进程执行for循环的操作,非常简单
import ray
ray.init(num_cpus=3)
@ray.remote
def exponentiation_test(a, b):
import time
time.sleep(1)
value = a ** b ** 3
print(a, b)
return a, b
if __name__ == '__main__':
remote_id_list = []
for value in range(100):
value += 3
exp_id = exponentiation_test.remote(value, value // 2)
remote_id_list.append(exp_id)
print("wakakakakak....")
z = ray.get(remote_id_list[-1])
print(z)
参考文章
|