代码之家  ›  专栏  ›  技术社区  ›  Adam Wheeler

julia中工人的局部变量访问

  •  2
  • Adam Wheeler  · 技术社区  · 6 年前

    假设我有一些 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 回复  |  直到 4 年前
        1
  •  3
  •   Chris Rackauckas    6 年前

    这样做是安全的,并将创建一个关闭,使 data 并将函数与 数据 每个过程。如果您使用 CachingPool 它将确保 数据 只发送给每个工人一次(在Julia v0.7和1.0中,默认情况下会这样做)。