——对小车最佳路径计算算法的ray部署和测试( 二 )


同时处理10组数据:
同时处理15组数据:
同时处理20组数据:
可见目前随着数据量的线性增加 , 时间基本上按照线性增加 。
内存占用情况:
通过 模块了解内存使用情况 。
tracemalloc.start()fun()current, peak = tracemalloc.get_traced_memory()print(f"Current memory usage is {current / 10 ** 6}MB; Peak was {peak / 10 ** 6}MB")tracemalloc.stop()
运行结果(一组数据):
5组数据:
10组数据:
可见随着数据的增加 , 内存占用差别并不是很大 , 主要的内存占用可能还是框架本身造成的 。
优化: 优化方式1:改变ray框架函数调用结构 , 增加并行性
之前的代码中 , 函数调用的树用的是最直接的方法 , 导致调用的层数比较多 , 树比较高 , 接下来通过让函数调用树更加均衡 , 可以提高代码的并行效率 。
def fun():route0 = shortest_way.remote(Location[0], 5)route1 = shortest_way.remote(Location[1], 5)route2 = shortest_way.remote(Location[2], 5)route3 = shortest_way.remote(Location[3], 5)route4 = shortest_way.remote(Location[4], 5)route5 = shortest_way.remote(Location[5], 5)route6 = shortest_way.remote(Location[6], 5)route7 = shortest_way.remote(Location[7], 5)new_route1 = merge_route.remote(route0, route1)new_route2 = merge_route.remote(route2, route3)new_route3 = merge_route.remote(route4, route5)new_route4 = merge_route.remote(route6, route7)layer2_route1 = merge_route.remote(new_route1, new_route2)layer2_route2 = merge_route.remote(new_route3, new_route4)final_route = merge_route.remote(layer2_route1, layer2_route2)route = ray.get(final_route)print(route)
测量了运行时间:
序号平均时间
时间(s)
0.01938
0.02256
0.01898
0.02065
0.02113
0.02129
0.01902

——对小车最佳路径计算算法的ray部署和测试

文章插图
0.02043
平均时间0.02043.
而优化前平均时间为0.02342 , 所以性能优化比为:
0.02342 0.02043 = 1.1464 \frac{0.02342}{0.02043} = 1.1464 0..02342?=1.1464
性能只提高了 , 并不是非常明显 , 还达不到要求 。
由于我们的代码结构并不是十分复杂 , 好像也找不到什么其他优化的方式了 , 虽然也尝试了其他一些改进 , 但仍然达不到%20的要求 , 所以暂且只能这样了 。
基于完成分布式部署并进行性能测试: 实现过程:
首先通过
sudo apt-get install docker.io
在上安装
然后通过
sudo docker pull ubuntu
下载镜像
之后启动三个容器
sudo docker run -it --name ubuntu-01 ubuntu bashsudo docker run -it --name ubuntu-02 ubuntu bashsudo docker run -it --name ubuntu-03 ubuntu bash
并检查IP地址
$ sudo docker inspect -f "{{ .NetworkSettings.IPAddress }}" ubuntu-01172.17.0.2$ sudo docker inspect -f "{{ .NetworkSettings.IPAddress }}" ubuntu-02172.17.0.3$ sudo docker inspect -f "{{ .NetworkSettings.IPAddress }}" ubuntu-03172.17.0.4
之后在三个容器里都安装、pip、ray
apt update && apt install python3 apt install python3-pippip install ray -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
把-02作为主节点 , 运行