我正在测试dask,但我不明白dask如何比普通的python慢。我使用jupyer开发了两个示例,每个示例都有时间,而且我认为自己做错了
第一次使用dask:28.5秒,之后使用纯Python 140 ms
import dask
import dask.array as da
%%time
def inc(x):
return x + 1
def double(x):
return x + 2
def add(x, y):
return x + y
N = 100000
data = [0 for x in range(N)]
x = da.from_array(data, chunks=(1000))
output = []
for x in data:
a = dask.delayed(inc)(x)
b = dask.delayed(double)(x)
c = dask.delayed(add)(a, b)
output.append(c)
total = dask.delayed(sum)(output)
total.compute()
**28.8 seconds**
现在有了普通的python
%%time
def inc(x):
return x + 1
def double(x):
return x + 2
def add(x, y):
return x + y
N = 100000
data = [0 for x in range(N)]
output = []
for x in data:
a = inc(x)
b = double(x)
c = add(a, b)
output.append(c)
total = sum(output)
**140 milliseconds**
答案 0 :(得分:0)
您的代码在我的计算机上运行:38s。 这段代码:
x = da.from_array(data, chunks=(1000))
%time ((x + 1) + (2*x)).compute()
在24毫秒内运行。
x = np.array(data)
%time ((x + 1) + (2*x))
以350us运行。
点:
for
-遍历数组!sleep
来模拟CPU工作,从而使您实际上获得了一些并行性.compute()
,请尝试将您要执行的操作形成为一次调用以进行计算,该调用需要任意数量的参数。