#dask求解1000000000个数的平均值
import dask.array as da
import numpy as np
import time
x=np.arange(1000000000)
#print(x)
y=da.from_array(x,chunks=(100000,))#chunks表示划分时每块的大小(大数据超过内存容量时,需要对数据进行按块划分)
tic=time.time()
print(y.mean().compute())
toc=time.time()
print(toc-tic)
499999999.5
7.00178861618042
tic=time.time()
print(x.mean())
toc=time.time()
print(toc-tic)
499999999.5
1.3414313793182373
发现numpy竟然比dask快,可能是因为numpy里面有等差数列的求和函数?
再试一下随机的
#dask求解1000000000个数的平均值
import dask.array as da
import numpy as np
import time
x=np.random.random(size=1000000000)
#print(x)
y=da.from_array(x,chunks=(100000,))#chunks表示划分时每块的大小(大数据超过内存容量时,需要对数据进行按块划分)
tic=time.time()
print(y.mean().compute())
toc=time.time()
print(toc-tic)
0.5000172934812016
6.600565433502197
tic=time.time()
print(x.mean())
toc=time.time()
print(toc-tic)
0.5000172934812018
0.8520197868347168
好,这样说明dask,我这里用的只是分块存储,并没有加快运行,反而更慢了。