如何使我的代码与dask并行化?
首先导入一些软件包:
import numpy as np
from dask import delayed
假设我有两个numpy数组:
a1 = np.ones(5000000)
a2 = np.ones(8000000)
我想显示两个阵列的总和和长度,并且该功能显示为:
def sum(x):
result = 0
for data in x:
result = result + data
return result, len(x)
def get_result(x, y):
return x, y
我在Colab中有两个示例,顺序示例就是这样:
%%time
result1 = sum(a1)
result2 = sum(a2)
result = get_result(result1, result2)
print(result)
输出是:
((5000000.0, 5000000), (8000000.0, 8000000))
CPU times: user 1.41 s, sys: 3.7 ms, total: 1.42 s
Wall time: 1.42 s
但是,我想计算这些值 parallelly 。
result1 = delayed(sum)(a1)
result2 = delayed(sum)(a2)
result = delayed(get_result)(result1, result2)
result = result.compute()
print(result)
输出是:
Delayed('get_result-ffbb6330-1014-42c5-b625-06e3e66a56ed')
CPU times: user 1.42 s, sys: 7.97 ms, total: 1.42 s
Wall time: 1.43 s
为什么第二个程序不起作用?因为壁时间两个示例几乎是相同的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论