Hi -

    I have attempted to use the fork::fork() function to perform
parallel processing. However, the child R function called needs to
know a given set of parameters to complete its task. Specifically, I
iterate through a vector, and output values based on the elements of
that vector to a database. The output strings contain elements of the
iterated vector. I mocked-up the following code as an example (NOTE:
WHILE NOT SPECIFICALLY DANGEROUS, THIS CODE MAXED OUT THE LIMIT OF MY
SYSTEMS FORKS -- this means that, if you run this code, no additional
processes on your system may start until you kill the parent R
session! BE VERY CAREFUL IF YOU DECIDE TO EXECUTE THIS CODE --
obviously, I do not recommend it. Presumably, an infinite recursion
scenario arose so  you are just left with a *lot* of R sessions. Also,
as each R session has equal access to stdin, you cannot reliably type
commands into a given R session to terminate it -- so definitely don't
run in a CLI environment -- at least you can kill the parent window
running R in a GUI environment). In any case, here is the code:

# -- BEGIN CODE
library("fork");

myforksub <- function(mymsg='default') {
        cat(mymsg,sep='\n');
        exit();
}

myforkparent <- function(n=10, mymsg='') {
        mypid <- c();
        for (i in 1:n) {
                mypid <- c(mypid, fork(myforksub(mymsg)));
        }
        # wait(NULL) apparently does not wait for all children to finish
        for (i in 1:n) {
                wait(mypid[i]);
        }
}

myforkparent(mymsg='new');

# -- END CODE

Obviously, 'fork(myforksub)' will work fine, but myforksub cannot
access the mymsg variable containing the 'new' value. How can I amend
the above without having to resort to socket connections to pass
information?

While this question is specific to the 'fork' non-standard package, I
thought a few people here would be familiar enough with its use to
offer a suggestion or two.

Thanks!

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to