我正在尝试使用doSMP,当我尝试w <- startWorkers(4)
时,我收到了错误
1:在startWorkers(workerCount = 4)中:
有一个使用doSMP1的现有doSMP会话
(实际上是doSMP1,... doSMP8)。现在,当我尝试使用rmSessions('doSMP1')
删除它时,我收到错误消息
尝试删除qnames:doSMP1
无法删除队列:doSMP1
有关如何使其发挥作用的任何建议。在我的8核机器上,doSNOW从版本2.11停止工作,我希望能够在本地并行处理,而无需将内容发送到Linux服务器。
我在8核机器上的WinXP 64位上运行R 2.12.1(32位)。
答案 0 :(得分:5)
同时确保使用最新版本的R(2.12.2),因为doSMP的当前版本是针对2.12.2编译的。
如果你真的需要摆脱这些会话,你可以尝试删除查看workers对象时指定的临时目录中的文件:
> w <- startWorkers(workerCount = 4)
> w
$taskq
<pointer: 0x05974f20>
$qname
[1] "doSMP1"
$workerCount
[1] 4
$tmpdir
[1] "C:\\Users\\JORISF~1\\AppData\\Local\\Temp\\RtmpXxLcTk\\doSMP44c815a1"
你应该清楚这个目录。在记下临时文件后,首先停止当前工作程序,然后尝试删除所有会话:
stopWorkers(w)
rmSessions(all=TRUE)
然后清理目录。然后重新启动R.有时会发生在启动后仍有剩余的会话在运行,如果再次使用startWorkers()
,您会看到。如果是这样,请先使用第一个stopWorkers(w)
而不先注册!然后再做rmSessions(all = TRUE)。有时R会崩溃。按照此处的说明重新启动并继续。
最后,忘记doSMP并使用其他提到的包之一。如果您没有以前的经验,降雪会给您带来最少的麻烦。有一个很好的介绍here。
更新:从R2.14开始,您拥有内置程序包parallel
,该程序包结合了multicore
和snow
的功能。