2014-12-31 2 views
3

Мой вопрос связан с этим question. Однако на указанном выше вопросе используется пакет multicore, который был заменен на parallel. Большинство функций в ответе не могут быть реплицированы в пакете parallel. Есть ли способ отслеживать прогресс в mclapply. При просмотре документации mclapply есть параметр mc.silent, я не уверен, сможет ли он отслеживать прогресс, и если да, то как и где мы можем видеть файл журнала? Я запускаю ubuntu ОС Linux. Ниже приведен пример воспроизводимого примера, для которого я хотел бы отметить прогресс.как отслеживать прогресс в mclapply в R в параллельном пакете

require(parallel) 

wait.then.square <- function(xx){ 
    # Wait for one second 
    Sys.sleep(2); 
    # Square the argument 
    xx^2 } 

output <- mclapply(1:10, wait.then.square, mc.cores=4,mc.silent=FALSE) 

Любая помощь была бы принята с благодарностью.

ответ

3

Это обновление моего related answer.

library(parallel) 

finalResult <- local({ 
    f <- fifo(tempfile(), open="w+b", blocking=T) 
    if (inherits(parallel:::mcfork(), "masterProcess")) { 
    # Child 
    progress <- 0.0 
    while (progress < 1 && !isIncomplete(f)) { 
     msg <- readBin(f, "double") 
     progress <- progress + as.numeric(msg) 
     cat(sprintf("Progress: %.2f%%\n", progress * 100)) 
    } 
    parallel:::mcexit() 
    } 
    numJobs <- 100 
    result <- mclapply(1:numJobs, function(...) { 
    # Do something fancy here... For this example, just sleep 
    Sys.sleep(0.05) 
    # Send progress update 
    writeBin(1/numJobs, f) 
    # Some arbitrary result 
    sample(1000, 1) 
    }) 
    close(f) 
    result 
}) 

cat("Done\n") 
+0

Большое спасибо @fotNelton – forecaster

3

Благодаря пакету pbmcapply теперь вы можете легко отслеживать ход mclapply и mcmapply рабочих мест. Просто замените mclapply на pbmclapply:

wait.then.square <- function(xx) { 
    Sys.sleep(2) 
    xx^2 
} 

library(pbmcapply) 
output <- pbmclapply(1:10, wait.then.square, mc.cores = 4) 

... который будет отображать довольно индикатор.

У автора есть хорошее сообщение в блоге о технических характеристиках и контрольных показателях производительности here.

+0

спасибо. Знаем ли мы, что pbmclapply работает в окнах? – forecaster

+0

mclapply обычно не работает в Windows. В Windows пакет pbapply - это опция отслеживания прогресса без распараллеливания. Я не думаю, что он поддерживает параллельные функции. – thie1e

Смежные вопросы