en utilisant en parallèle du parLapply: impossible d'accéder à des variables au sein du code en parallèle

J'ai reçu récemment un ordinateur avec plusieurs cœurs et suis en train d'apprendre à utiliser l'informatique parallèle. Je suis assez compétent avec lapply et on m'a dit parLapply fonctionne de manière similaire. Je ne suis pas fonctionner correctement. Il semble que j'ai explicitement de tout mettre à l'intérieur de la parLapply pour le faire fonctionner (c'est-fonctions à utiliser, variables, etc.). Avec lapply elle se lit de la mère de l'environnement et de parLapply ne semble pas le faire. Donc, dans mon exemple ci-dessous j'ai pu faire fonctionner le tout en plaçant toutes les infos à l'intérieur de parLapply mais si je l'utiliser à l'intérieur d'une fonction définie par l'utilisateur, je ne peux pas explicitement mis text.var à l'intérieur de parLapply.

library(parallel)
text.var <- rep("I like cake and ice cream so much!", 20)
ntv <- length(text.var)
gc.rate <- 10

pos <-  function(i) {
    paste(sapply(strsplit(tolower(i), " "), nchar), collapse=" | ")
}

lapply(seq_len(ntv), function(i) {
        x <- pos(text.var[i])
        if (i%%gc.rate==0) gc()
        return(x)
    }

)

#doesn't work
cl <- makeCluster(mc <- getOption("cl.cores", 4))
parLapply(cl, seq_len(ntv), function(i) {
        x <- pos(text.var[i])
        if (i%%gc.rate==0) gc()
        return(x)
    }

)

#does work but have to specify all the stuff inside parLapply
cl <- makeCluster(mc <- getOption("cl.cores", 4))
parLapply(cl, seq_len(ntv), function(i) {
        ######stuff I have to put inside parLapply##########
        text.var <- rep("I like cake and ice cream so much!", 20)
        ntv <- length(text.var)
        gc.rate <- 10
        pos <-  function(i) {
            paste(sapply(strsplit(tolower(i), " "), nchar), collapse=" | ")
        }
        ######stuff I have to put inside parLapply##########
        x <- pos(text.var[i])
        if (i%%gc.rate==0) gc()
        return(x)
    }
)

Comment puis-je passer text.var, ntv, gc.rate, et pos à parLapply sans explicitement de les mettre à l'intérieur? (J'imagine que vous les passer comme une liste d'une certaine manière)

PS machine windows 7 donc j'ai besoin d'utiliser parLapply je pense que

InformationsquelleAutor Tyler Rinker | 2012-08-18