Parallel processing 在Julia中并行运行已解析的函数
我想并行运行一个函数,函数是通过字符串参数提供的。它首先从字符串解析为表达式,然后并行运行 问题是并非所有工作进程都知道字符串参数 我如何才能做到这一点:Parallel processing 在Julia中并行运行已解析的函数,parallel-processing,julia,Parallel Processing,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(v
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
作为函数运行的第一行也没有任何作用。如果我没有模块,我就让它工作了…结束代码,如下所示:
function run(f)
@eval @everywhere f = $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
如果我用module…end
环绕此函数,则会出现类似以下错误:##9#11未定义(在辅助工2上)
我有一个想法,它不适用于模块…end
的原因是@everywhere
使用模块Main。。。我朝这个方向尝试了一些东西,但没有成功