【python】Dask并行

继续学!
入门:https://blog.csdn.net/a19990412/article/details/79510219
官方文档:https://docs.dask.org/en/latest/dataframe.html
他人小总结:https://blog.csdn.net/sinat_26917383/article/details/78044437
https://blog.csdn.net/qq_34638161/article/details/80734184
https://www.cnblogs.com/HelloGreen/p/8817863.html
https://juejin.im/post/5c1feeaf5188257f9242b65c

背景

双重for循环,40000 * 40000的时间复杂度,其中不涉及改值,只是读取,而且计算之后需要保留top5大值,符合并行原则。

for i in n:
	for j in m:

其实i和j的计算不冲突,i和0-m进行计算,i+1值分别和0-m计算,不必排序计算,可以多进程。

dask安装

pip大法送给你

3台机器 - 1个客户A,2个服务T1+T2

首先3者需要在同一个局域网之下,相互ping一下就OK
1、在A中输入dask-scheduler
结果如下:
在这里插入图片描述
目的就是为了找到tcp://后的ip和端口号。

2、在T1、T2分别中输入dask-worker A的ip地址:8786。即上图中的红框信息。

3、在A中运行代码

from dask.distributed import Client
from time import time

def square(x):
    return x ** 2
# 计算1-MAX的平方的和
MAX = 1000
st = time()
client = Client('A的ip地址:8786')   # 这里的地址记得根据我上面说的修改掉。
A = client.map(square, range(MAX))
total = client.submit(sum, A)
print(total.result())
et = time()
print(et - st)

首次试验,时间效率并不满意。

发布了178 篇原创文章 · 获赞 30 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/ACBattle/article/details/103207581