朱莉娅工人的当地变量访问

时间:2017-11-14 19:28:03

标签: parallel-processing julia

我们说我有一些data :: Vector{Float64}和一个函数f!(data::Vector{Float64}, i::Int)可以从中计算一些值,并在此过程中对其进行修改。

answers = pmap([1,2,3,4]) do i
    f!(data, i)
end

这样做安全吗?每位员工是否拥有自己的data副本,还是应该明确copy(data)所有员工?

1 个答案:

答案 0 :(得分:3)

这样做是安全的,并且会创建一个闭包,将data放入函数中,并将带有data的函数发送到每个进程。如果你使用CachingPool,它将确保data仅发送给每个工作者一次(在Julia v0.7和1.0中,这将默认完成)。