如果我有以下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
答案 0 :(得分:0)
只需在@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
注意:run
是Base
中已存在的功能。