Julia:涉及调用另一个函数的函数的并行循环

Julia: parallel loops involving a function that calls another function

我有两个文件

test_file.jl

using Distributed

function inner_function(v)
    v_2 = 2 * v
    return v_2
end

function loop(N, v)
@sync @distributed for i in 1:N
    v_3 = inner_function(v)
    v_3[1] = i
    println(i)
    println(v_3)
end
end

test_file_call.jl

@everywhere include("test_file.jl")
v = [1 2 3 4]
loop(100,v_2)

当我 运行 julia -p 2 test_file_call.jl 时,我收到一条错误消息说

ERROR: LoadError: UndefVarError: v_2 not defined

我不确定为什么。 v_2 是在函数中创建的变量,我已经使用了 @everywhere include("test_file.jl") 所以 Julia 不应该说变量是未定义的。我能得到提示吗?谢谢!

您在 loop(100, v_2) 调用中使用了 v_2,因此 Julia 在全局范围内查找 v_2,但没有在那里找到它。可能您想在定义 v.

时编写 loop(100, v)