如何从包远程运行 Julia 函数?



我正在移植一个曾经在 Julia 0.4 中工作的程序到 Julia 0.5 并遇到问题。

这是程序:

addprocs(3)
ref = @spawn factor(21883298135690819)
factors = fetch(ref)
@assert factors == Dict(234711901=>1,93234719=>1)

在Julia 0.5上运行时,出现错误

错误:在工作线程 2:
factor(21883298135690819,) 已移至包 Primes.jl。
运行 Pkg.add("Primes") 在 Julia v0.5- 上安装 Primes

很公平。但即使我进入交互式终端,我的代码仍然不起作用!以下为文字实录:

julia> Pkg.add("Primes")
INFO: Nothing to be done
julia> using Primes
julia> Primes.factor(21883298135690819)
Dict{Int64,Int64} with 2 entries:
234711901 => 1
93234719  => 1
julia> addprocs(3)
3-element Array{Int64,1}:
2
3
4
julia> ref = @spawn factor(21883298135690819)
Future(2,1,5,Nullable{Any}())
julia> factors = fetch(ref)
ERROR: On worker 2:
factor(21883298135690819,) has been moved to the package Primes.jl.
Run Pkg.add("Primes") to install Primes on Julia v0.5-

同样的问题!

我已经阅读了文档,该文档似乎表明using声明使代码可用于所有进程,但事实并非如此。

我做错了什么?

文档说"使用 DummyModule 会导致模块在用julia -p 2启动 Julia 时加载到所有进程上",这意味着在 REPL 中,应该首先运行addprocs(2)。 所以你应该把addprocs(3)放在using Primes之前.

相关内容

  • 没有找到相关文章

最新更新