【发布时间】:2022-01-07 16:02:03
【问题描述】:
我正在尝试使用 dask 对不同数组中所有元素的不同组合运行一个函数,但我正在努力应用它。
序列号如下:
for i in range(5):
for j in range(5):
for k in range(5):
function(listA[i],listB[j],listC[k])
print(f'{i}.{j}.{k}')
k=k+1
j=j+1
i=i+1
此代码在我的计算机上运行时间为 18 分钟,而每个数组只有 5 个元素,我想在更大尺寸的数组上与 dask 并行运行此代码。 函数内部的所有计算并不相互独立。 您可以假设该函数的作用是:listA[i]*listB[j]*listC[k]
在网上搜索了很多之后,我找不到任何解决方案。 非常感谢。
【问题讨论】:
-
是
listA、listB和listC的数组列表吗? -
不,每个列表都没有任何联系。
-
对不起,我的意思是,列表的内容是什么?
listA[i]是数组吗? -
否,例如:listA = [1,2,3,4,5], listA[0] = 1
-
那么我建议您将列表转换为真正的 NumPy 数组。这将允许您使用向量和矩阵数学函数进行计算,即使不使用 dask 也可以大大加快速度。如果需要,它还将使您的代码转换为 dask 变得更加容易。不幸的是,您的示例不够详细,我无法知道您需要哪些具体操作。特别是如果您可以包含一些示例输入和输出,那将有所帮助。
标签: python parallel-processing dask dask-distributed dask-delayed