标签: mclapply

有没有办法跟踪mclapply的进度?

我爱的设置.progress = 'text'plyr's llply.但是,由于列表项被发送到各个核心,然后在最后进行整理,因此我不得不知道沿着mclapply(从包中multicore)走多远.

我一直在输出消息,*currently in sim_id # ....*但这并不是很有帮助,因为它没有给我一个指示列表项的完成百分比的指示(虽然知道我的脚本没有卡住并移动是有帮助的).

有人可以建议其他想法,让我看看我的.Rout文件,并获得进步感吗?我已经考虑过添加一个手动计数器但是看不清楚我将如何实现它,因为mclapply必须先完成所有列表项的处理才能给出任何反馈.

r progress-bar mclapply

40
推荐指数
5
解决办法
8570
查看次数

理解R中mclapply和parLapply之间的差异

我一直在使用R中并行技术的项目近期开工,并有我的程序使用Linux系统的工作mclapply并行包.但是,我parLapply对Windows的理解遇到了障碍.

使用mclapply我可以设置核心数,迭代次数,并将其传递给我的工作区中的现有函数.

mclapply(1:8, function(z) adder(z, 100), mc.cores=4)
Run Code Online (Sandbox Code Playgroud)

我似乎无法在Windows中实现相同的功能parLapply.据我了解,我需要通过使用传递所有变量clusterExport()并将我想要应用的实际函数传递给参数.

这是正确的还是有类似于mclapply适用于Windows 的功能?

parallel-processing r mclapply

26
推荐指数
2
解决办法
2万
查看次数

tm_map在Mac上的R 3.0.1中有parallel :: mclapply错误

我在平台上使用R 3.0.1:x86_64-apple-darwin10.8.0(64位)

我正在尝试使用tm库中的tm_map.但是当我执行这段代码时

library(tm)
data('crude')
tm_map(crude, stemDocument)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Warning message:
In parallel::mclapply(x, FUN, ...) :
  all scheduled cores encountered errors in user code
Run Code Online (Sandbox Code Playgroud)

有谁知道这方面的解决方案?

parallel-processing r mclapply tm

17
推荐指数
3
解决办法
2万
查看次数

通过使用多核和并行编程来加速data.table组

我有一个很大的代码,聚合步骤是速度方面的当前瓶颈.

在我的代码中,我想加快数据分组步骤的速度.我的数据的SNOTE(简单非平凡示例)如下所示:

library(data.table)
a = sample(1:10000000, 50000000, replace = TRUE)
b = sample(c("3m","2m2d2m","3m2d1i3s2d","5m","4m","9m","1m"), 50000000, replace = TRUE)
d = sample(c("3m","2m2d2m","3m2d1i3s2d","5m","4m","9m","1m"), 50000000, replace = TRUE)
e = a
dt = data.table(a = a, b = b, d = d, e = e)
system.time(c.dt <- dt[,list(b = paste(b, collapse=""), d = paste(d, collapse=""), e = e[1], by=a)])
   user  system elapsed 
 60.107   3.143  63.534
Run Code Online (Sandbox Code Playgroud)

这对于如此大的数据示例来说非常快,但在我的情况下,我仍在寻找进一步的加速.在我的情况下,我有多个核心,所以我几乎肯定必须有一种方法来使用这种计算能力.

我愿意将我的数据类型更改为data.frame或idata.frame对象(理论上,idata.frame应该比data.frames更快).

我做了一些研究,看起来plyr软件包有一些并行功能可能会有所帮助,但我仍然在努力研究如何为我正在尝试的分组做这件事.在另一篇SO帖子中,他们讨论了一些这些想法.由于它使用了foreach函数,我仍然不确定我在这个并行化方面取得了多少成就.根据我的经验,foreach函数对于数百万的快速操作来说并不是一个好主意,因为核心之间的通信工作最终会减慢并行化工作的速度.

r mclapply data.table

15
推荐指数
2
解决办法
6774
查看次数

mclapply随机返回NULL

当我使用mclapply时,不时(真正随机)它会给出不正确的结果.这个问题在互联网上的其他帖子中有详尽的描述,例如(http://r.789695.n4.nabble.com/Bug-in-mclapply-td4652743.html).但是,没有提供解决方案.有谁知道如何解决这个问题?谢谢!

parallel-processing r mclapply

15
推荐指数
2
解决办法
1808
查看次数

从R Studio中的mclapply打印

我使用mclapply从内部RStudio,想有一个输出到每个流程控制台但这似乎以某种方式抑制(如提及例如这里:是mclapply保证返回其为了结果?).我怎么能让R Studio打印出像这样的东西

x <- mclapply(1:20, function(i) cat(i, "\n"))

到控制台?

我已经尝试过print(),cat(),write(),但它们似乎都没有用.我也尝试mc.silent = FALSE明确设置没有效果.

r rstudio mclapply

13
推荐指数
2
解决办法
2910
查看次数

R tm在mclapply(content(x),FUN,...)中:所有计划的核心在用户代码中遇到错误

当我将以下代码运行到倒数第二行时,我收到了警告消息:

在mclapply(content(x),FUN,...)中:所有计划的核心在用户代码中遇到错误

当我跑完最后一行时,我得到了

"UseMethod(\"words \")中的错误:\n没有适用于"字"的方法应用于类\"character \"\n"attr(,"class")"try-error"attr(, "条件")

以下链接是一个可重现的示例,我们可以将其复制/粘贴到R并运行.

https://github.com/weijia2013/mclapply-issue/blob/master/codes

我刚开始学习R,我将非常感谢你的帮助.

library(devtools)
install_github("twitteR", username="geoffjentry")
library(twitteR)
setup_twitter_oauth("API Key", "API Secret")

rdmTweets <- userTimeline('rdatamining', n=200)
(nDocs <- length(rdmTweets))
rdmTweets[11:15]
for (i in 11:15) {cat(paste("[[", i, "]] ", sep="")) + writeLines(strwrap(rdmTweets[[i]]$getText(), width=73))}

df <- do.call("rbind", lapply(rdmTweets, as.data.frame))
dim(df)
library(tm)
library(SnowballC)
library(RWeka)
library(rJava)
library(RWekajars)

myCorpus <- Corpus(VectorSource(df$text))
myCorpus <- tm_map(myCorpus, tolower)
myCorpus <- tm_map(myCorpus, removePunctuation)
myCorpus <- tm_map(myCorpus, removeNumbers)
removeURL <- function(x) gsub("http[[:alnum:]]*", "", x)
myCorpus <- tm_map(myCorpus, removeURL)
myStopwords <- c(stopwords("english"), "available", "via")
myStopwords …
Run Code Online (Sandbox Code Playgroud)

twitter r rstudio mclapply tm

13
推荐指数
1
解决办法
2万
查看次数

如何让R的lapply(和mclapply)恢复随机数生成器的状态?

R忽略.Random.seed了lapply里面的设置.set.seed然而,使用工作正常.

一些代码:

# I can save the state of the RNG for a few seeds
seed.list <- lapply( 1:5, function(x) {
                        set.seed(x)
                        seed.state <- .Random.seed
                        print( rnorm(1) )
                        return( seed.state )}) 
#[1] -0.6264538
#[1] -0.8969145
#[1] -0.9619334

# But I get different numbers if I try to restore 
# the state of the RNG inside of an lapply
tmp.rest.state <-  lapply(1:5, function(x) { 
                        .Random.seed <- seed.list[[x]]
                        print(rnorm(1))})
# [1] -0.2925257
# [1] 0.2587882
# [1] -1.152132 …
Run Code Online (Sandbox Code Playgroud)

random r lapply mclapply

11
推荐指数
1
解决办法
836
查看次数

R 3.0中多核(mclapply)的弃用

据我所知multicore,R版本2.14已被弃用,我被建议开始使用parallel内置于R 3.0基础的软件包.

通过文档parallel,我发现主要有两个函数可以调用parallel,collect例如:

p <- parallel(1:10)
q <- parallel(1:20)
collect(list(p, q)) # wait for jobs to finish and collect all results
Run Code Online (Sandbox Code Playgroud)

由于我不太熟悉并行计算的细节,所以我总是multicore's mclapply在我的代码中使用开箱即用.我想知道如何利用新的parallel包装mclapply.

干杯

parallel-processing multicore r mclapply

11
推荐指数
1
解决办法
4915
查看次数

Knitr:将块码输出重定向到终端

我想监视嵌入在knitr文件中的一些非常冗长的并行计算.

计算依赖于我编写的包,相关函数使用多核包中的mclapply 进行并行化.该函数输出进度条监视使用的稍加修改的实施的计算的进展txtProgressBarutils的包.进度条打印到终端,并在每次mclapply迭代完成时通过fifo连接进行更新.

当从文件中获取或直接调用函数时,这种方法很好,但是我发现无法在knitr中使用它.我已经尝试了相关的块选项,我可以将消息和警告重定向到终端,但不是进度条.有人可以帮忙吗?

很抱歉没有提供最小的工作示例,但我不知道如何在此设置中制作一个.

multicore r fifo knitr mclapply

9
推荐指数
1
解决办法
884
查看次数