我发现plyr方法在Windows中以串行方式而不是并行方式运行 - 下面的示例是典型的,群集已创建并且可以工作但是在执行llply语句时,我观察到简短的CPU活动并增加了所有内存的使用集群节点进程处理,但随后它们都停止处理任何事情,并且rsession进程继续使用约100%的处理器,直到它返回(正确)结果。
cl <- makeCluster(detectCores()-1)
registerDoParallel(cl)
clusterExport(cl, "str_replace")
mydata$textfield <- unlist(llply(mydata$textfield, function(x) str_replace(x, " ", " "),.parallel = T))
相比之下,如果我在同一个集群上使用parLapply,我会立即看到所有集群节点进程都开始使用~100%CPU,结果很快就会返回:
mydata$textfield <- unlist(parLapply(cl, mydata$textfield, function(x) str_replace(x, " ", " ")))
我正在R 3.2.5
使用plyr 1.8.4
感谢任何关于为什么会发生这种情况的提示 - 我已经用各种陈述观察了它,我无法识别它们之间的任何共同点,这与plyr并行处理成功的情况不同 - 是的,它适用于我的一些代码但不是全部...