我有一个使用pmap运行的函数。我希望输出是一个向量 - p - 其条目是每个并行运行的迭代的输出。例如,代码如下:
@everywhere function addo(mc,mcf)
p = zeros(Int64,mcf) ;
p[mc] = mc ;
return p
end
pmap(mc -> addo(mc,mcf),1:1:mcf) ;
我得到的输出是
100-element Array{Array{Int64,1},1}:
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0 … 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 2, 0, 0, 0, 0, 0, 0, 0, 0 … 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 3, 0, 0, 0, 0, 0, 0, 0 … 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
⋮
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0 … 0, 0, 0, 0, 0, 0, 0, 98, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0 … 0, 0, 0, 0, 0, 0, 0, 0, 99, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0 … 0, 0, 0, 0, 0, 0, 0, 0, 0, 100]
相反,我需要这样的东西,p = [1,2,3,4,...,100];
如何以所需格式获得输出?
pmap
,类似于map
,将你的变换函数mc -> addo(mc, mcf)
应用于集合1:1:mcf
中的每个元素。您的代码中的问题是,对于集合中的每个元素,您要创建一个大小为mcf
的新向量,并且整个结果将成为您在每次转换中创建的数组的数组,而您想要的是pmap
的结果。大小mcf
。因此,对于集合中的每个元素,您应该只返回一个元素。 pmap
已经为您提供了一个分组,用于对每次转换的结果进行分组。
@everywhere function addo(mc)
return mc
end
p = pmap(mc -> addo(mc), 1:1:mcf)
这将给你p = [1,2,3,4,...,100]
。