使用外部包的foreach并行计算
foreach parallel computing using external packages
我自己创建了一个包,尝试在并行计算中应用。
假设包中包含 function1 和 function2.
我的密码是
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)
我自己创建了一个包,尝试在并行计算中应用。
假设包中包含 function1 和 function2.
我的密码是
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)