我有一些代碼使用@parallel for
循環進行計算,在每次迭代時產生一個輸出元組。我想作進一步處理陣列收集這些元組:收集for循環的元組數組
n=2
out = @sync @parallel (hcat) for i=1:n
(i, i+1)
end
for i=1:n
(j,k) = out[i]
# do something
end
println("okay")
如果這裏只有一個循環的迭代,out
是一個元組,而不是元組的數組,(j,k) = out[i]
拋出一個錯誤。
n=1
out = @sync @parallel (hcat) for i=1:n
(i, i+1)
end
for i=1:n
(j,k) = out[i] # error
# do something
end
println("not reached")
有沒有一種方法,我可以強制out
是元組的數組無論n
的價值,而不必循環後做out
任何檢查?
謝謝。
@ Reza的回答:用'[(i,i + 1)]替換'(i,i + 1)''看起來更好。在任何情況下,平行循環超過1個元素都會導致一些開銷。 –