朱莉娅:使用@parallel的或PMAP里面的孩子/子模块
问题描述:
在以下文件朱莉娅:使用@parallel的或PMAP里面的孩子/子模块
test.jl
push!(LOAD_PATH, string(pwd(), "/lib/"))
@everywhere using Parent
addprocs(2)
Parent.Child.test()
的lib/Parent.jl
@everywhere module Parent
struct INT
i::Int64
end
include("Child.jl")
end
的lib /儿童。 JL
module Child
import Parent
function test()
a = [1, 2, 3, 4, 5]
@parallel (+) for x in a
i = Parent.INT(x)
println(x)
x
end
end
end
我得到以下埃罗rs:
% julia test.jl
ERROR: ERROR (unhandled task failure): On worker 3:
UndefVarError: Parent not defined
使用@parallel for或pmap会得到相同的错误。
但是,如果我把任何模块以外的所有东西,那么代码工作正常。
删除“addprocs(2)”,那么一切工作正常。
我的项目由许多模块和子模块组成,并希望保留模块化结构。但是,我对Julia很新,可能不知道如何正确使用它。我在这里做错了什么?
答
我解决了我的问题!
addprocs(2)
必须在test.jl
我还发现,把功能测试()在父模块和消除儿童模块共给出了同样的错误,第一件事情。 –