解决了——看下面。
我正在尝试在 Windows 7 上使用 R 运行 doRedis 并行后端。在尝试doRedis 小插图中的第一个示例时遇到了问题:
library('doRedis')
registerDoRedis('jobs')
startLocalWorkers(n = 2, queue = 'jobs', host = 'localhost')
...
这就是问题所在:首先,两个 R.exe 进程运行并在任务管理器中可见,然后运行两个 Rterm.exe 进程,它们加载了大约 250 MB 的数据(我希望这是我的库本地项目的 .Rprofile 文件),然后立即关闭.
我确实进行了一些检查:
Redis 服务器似乎按预期工作,我可以通过运行来验证:
redisInfo()
并看到它确实已收到连接,并且客户端已连接。
此外,运行多个独立的 R 会话并注册“作业”队列可以工作,即运行以下命令:
require('doRedis')
redisWorker('jobs')
然后通过输入在主 R 会话中运行 MC 示例
foreach(icount(10), .combine = sum, .multicombine = TRUE, .inorder = FALSE) %dopar% 4*sum((runif(1e5)^2 + runif(1e5)^2)<1)/1e6
像宣传的那样工作——终端会话报告活动,主会话获得结果。\新队
因此,我需要帮助...
...跟踪由主 R 会话调用的工作进程立即关闭的原因。但是,我不知道从哪里开始。我知道该问题的可能解决方法,但是能够以一种无忧无虑的方式启动它会更方便。
谢谢!
解决方案
问题是命令调用的 R 进程startLocalWorkers
不知道在这里寻找库。如果我redisWorker
在具有正确修改的库路径列表的 R 会话中调用,则一切正常。但是,如果我要求这个 R 会话启动新的工作人员 - 一切都失败了。
解决方案是创建一个环境变量R_USER_LIBS
来保存库文件夹的路径。一旦完成,一切都会完美运行。
RStudio 用户应该注意,环境变量的每次修改都需要他们重新启动 RStudio,然后子 R 进程才能读取修改后的新值R_LIBS_USER
。