関数を文字列引数で提供する並列関数を実行します。まず文字列から式に解析され、次に並列に実行されます。Juliaで並列に解析された関数を実行する
文字列の引数がすべてのワーカープロセスに認識されないという問題があります。
は、どのように私はこの作業を行うことができます。
module test
function run(f)
@everywhere f_exp = eval(parse(f))
values = SharedArray(Float64,2)
@sync @parallel for i = 1:2
values[i] = f_exp(i)
end
return mean(values)
end
end
# RUN AS FOLLOWS
# @everywhere include("c:\\projects\\evaluator\\test.jl")
# test.run("function func(x) return 2*x end")
私はそれが動作するように期待していなかったのに、私はまた、@everywhere f_exp = eval(parse("@everywhere $f"))
を試してみました...そして、それはしませんでした。
どのように議論をあらゆるプロセスに知らせることができますか?
@everywhere f
を機能実行の最初の行にすることも何もしませんでした。