繁体   English   中英

doSMP不想启动一些工作人员

[英]doSMP does not want to start some workers

我用来在R中加载doSMP软件包。

但是,今天它不起作用,我不明白为什么...

我已经尝试了rmSessions(all=TRUE) ,但是问题仍然存在!

尽管如此, getDoParWorkers()表明我还没有注册并行后端...

你对我有解决办法吗?

错误信息:

> library(doSMP)
Le chargement a nécessité le package : foreach
Le chargement a nécessité le package : iterators
Le chargement a nécessité le package : codetools
foreach: simple, scalable parallel programming from REvolution Computing
Use REvolution R for scalability, fault tolerance and more.
http://www.revolution-computing.com
Le chargement a nécessité le package : revoIPC
> w <- startWorkers(4)
Erreur dans startWorkers(4) : unable to create a task queue: limit exceeded
De plus : Messages d'avis :
1: In startWorkers(4) : there is an existing doSMP session using doSMP1
2: In startWorkers(4) : there is an existing doSMP session using doSMP2
3: In startWorkers(4) : there is an existing doSMP session using doSMP3
4: In startWorkers(4) : there is an existing doSMP session using doSMP4
5: In startWorkers(4) : there is an existing doSMP session using doSMP5
6: In startWorkers(4) : there is an existing doSMP session using doSMP6
7: In startWorkers(4) : there is an existing doSMP session using doSMP7
8: In startWorkers(4) : there is an existing doSMP session using doSMP8
9: In startWorkers(4) :
possible leak of worker sessions: consider using FORCE=TRUE
> getDoParWorkers()
[1] 1

调用rmSessions()可以构造为:

rmSessions(all.names=TRUE)

(并非全部= TRUE),这在我的计算机上可以正常运行。 如果那确实不起作用:

w <- startWorkers(4,FORCE=TRUE) 

应该打开它们。 如错误消息中所述。 在奇怪的情况下,问题仍然存在,重新启动Windows通常是唯一的解决方案。 也有记录。

无论如何,无论发生什么情况,都应确保始终调用stopWorkers(w)。 这样可以避免问题。

旁边,如果要检查DoParWorkers,则必须先注册它们,然后才能看到它们:

> w <- startWorkers(4)
> getDoParWorkers()
[1] 1
> registerDoSMP(w)
> getDoParWorkers()
[1] 4

请再次仔细阅读该文档。 您确实必须严格遵守它,否则您的计算机上将开始时髦的生意。 如果您不谨慎对待,DoSMP可能是一个恶毒的混蛋。

http://cran.r-project.org/web/packages/doSMP/doSMP.pdf

http://cran.r-project.org/web/packages/doSMP/vignettes/gettingstartedSMP.pdf

PS:如果您尝试了所有这些操作,并更新到R的最新版本和您使用的软件包,但仍然无法使用,请给我们提供一个可复制的示例(无法使用正确的代码复制您的示例)并包括所有版本号。


在旁注中,我停止使用doSMP因为它经常使我的R死锁。 还有其他后端到foreach是更好地工作,至少对我来说。 我将snowdoSnow包结合使用来实现registerDoSnow()函数。 实际上,您也可以为大多数平行事物snowfall 这是snow的前端,对我来说效果很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM