使用外部包的foreach并行计算

foreach parallel computing using external packages

我自己创建了一个包,尝试在并行计算中应用。
假设包中包含 function1function2.
我的密码是

cl = makeCluster(2)
registerDoParallel(cl)

foreach(i=1:N,.packages='mypackage') %dopar% {
   res = function1(i)
   res
}
stopCluster(cl)

然后报错,function1在mypackage中

Error in { : task 1 failed - "could not find function "function1""

但是,如果我通过添加

更改代码
.export = 'function1'

错误消失。

感谢任何可以解释这一点的人。

如 OP 所述使用 .export 或将函数指定为 packageName::functionName

cl = makeCluster(2)
registerDoParallel(cl)

foreach(i=1:N,.packages='mypackage') %dopar% {
   res = mypackage::function1(i)
   res
}
stopCluster(cl)