我们说我有一些data :: Vector{Float64}
和一个函数f!(data::Vector{Float64}, i::Int)
可以从中计算一些值,并在此过程中对其进行修改。
answers = pmap([1,2,3,4]) do i
f!(data, i)
end
这样做安全吗?每位员工是否拥有自己的data
副本,还是应该明确copy(data)
所有员工?
答案 0 :(得分:3)
这样做是安全的,并且会创建一个闭包,将data
放入函数中,并将带有data
的函数发送到每个进程。如果你使用CachingPool,它将确保data
仅发送给每个工作者一次(在Julia v0.7和1.0中,这将默认完成)。