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。。。我朝这个方向尝试了一些东西,但没有成功