在不同的进程中运行同一模块和文件中的函数



如果我有以下 Julia 代码片段,有什么方法可以运行具有多个进程的 for 循环,而无需将complicated放入额外的文件中并执行类似 @everywhere include("complicated.jl") 的操作?

否则,进程似乎无法找到该功能。

function complicated(x)
    # long and complicated computation
    x^2
end
function run()
    results = []
    for i in 1:4
        push!(results, @spawn complicated(3))
    end
    return mean(results)
end
只需使用宏注释要在

所有处理器中定义的表达式@everywhere(在 Julia 中,一切都是表达式(:

julia> addprocs(Sys.CPU_CORES)
12-element Array{Int64,1}:
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
julia> @everywhere function complicated(x)
           # long and complicated computation
           x^2
       end
julia> function main()
           @sync results = @parallel vcat for i in 1:4
               complicated(3)
           end
           return mean(results)
       end
main (generic function with 1 method)
julia> main()
9.0

注意runBase 中已经存在的函数。

相关内容

  • 没有找到相关文章

最新更新