首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >foreach冻结/挂起

foreach冻结/挂起
EN

Stack Overflow用户
提问于 2018-06-13 05:50:56
回答 1查看 64关注 0票数 0

我在远程Linux服务器上运行R,遇到并行代码导致程序冻结的问题(没有错误消息)。我已经发布了一些玩具代码,它们复制了下面的问题。同样的代码在我家里的PC上运行得很好(< 1秒),所以我不知道如何调试。

即使不清楚问题是什么,任何关于调试的建议都会非常有用。谢谢!

代码语言:javascript
复制
# Prelims
library(stringdist)
library(doParallel)
rm(list = ls())
cat("\014")

# Start parallel
registerDoParallel(cores=2)

# Works
cat("Test #1","\n")
foreach (i=1:2, .packages="stringdist") %dopar% {
    cat(stringdist("JOHN","JAHN",method="jaccard",q=2),"\n")
}

# Works
cat("Test #2","\n")
foreach (i=1:2, .packages="stringdist") %do% {
    cat(stringdist("JOHN",c("JAHN","DJIN"),method="jaccard",q=2),"\n")
}

# Doesn't work -- spawns two workers and freezes
cat("Test #3","\n")
test<-foreach (i=1:2, .packages="stringdist") %dopar% {
    cat(i,"\n")
    stringdist("JOHN",c("JAHN","DJIN"),method="jaccard",q=2)
}

stopImplicitCluster()

输出/结果:

EN

回答 1

Stack Overflow用户

发布于 2018-06-13 22:22:16

只有部分解决方案,但更仔细地看,我发现"stringdist“已经使用了多个线程。这方面的“嵌套并行”似乎在Linux服务器设置中造成了问题,尽管不总是,也不是在我的家用PC上,我不确定为什么。

将"nthread=1“设置为字符串选项允许我使用并行foreach。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50826331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档