Hi Henrik, Firstly, thanks for keeping an eye out and sharing.
On Tue, Nov 9, 2010 at 12:59 AM, Henrik Bengtsson <h...@biostat.ucsf.edu> wrote: > I just stumbled into the 'fork' package (GPL-2). It allows you do > send signals from within R. Unfortunately it is not available on > Windows, but it is definitely a start. This isn't so horrible within the context of my question (which was using foreach with doMC -- the wrapper for multicore) since multicore itself doesn't run on windows. I guess we'd just have to have some "global cache" in the main R workspace (that drives the processor splitting) that stores PIDs of the child processes spawned by foreach/doMC, which I guess we could later send kill() signals to if they were abnormally interrupted ... will have to look into it later. Thinking about it, I reckon the multicore package must have something similar? Will investigate ... -steve > > Here is an example how an R session can send an interrupt signal > (SIGINT) to itself: > > library("fork"); > > # Get the process ID of the current R session > pid <- getpid(); > > # Run some code and interrupt the current R session > tryCatch({ > print("Tic"); > Sys.sleep(2); > print("Tac"); > kill(pid, signal=sigval("SIGINT")$val); > for (kk in 1:100) { print(kk); } > }, interrupt=function(int) { > print(int); > }) > > which gives: > > [1] "Tic" > [1] "Tac" > [1] 1 > [1] 2 > [1] 3 > [1] 4 > [1] 5 > [1] 6 > [1] 7 > [1] 8 > [1] 9 > [1] 10 > [1] 11 > [1] 12 > <interrupt: > > > Interestingly, the SIGINT signal is not interrupting R momentarily, > which is why the code following kill() is still executed for a while > before the interrupt is caught. > > /Henrik > > On Wed, Nov 3, 2010 at 5:06 PM, Henrik Bengtsson <h...@biostat.ucsf.edu> > wrote: >> Hi, >> >> I am also interest in ways to in R send signals to other R >> sessions/processes, ideally in (what appears to be) an OS-independent >> way. For what it is worth, related question have been asked before, >> cf. R-devel thread 'Sending signals to current R process from R >> running under MS Windows (c.f. Esc)' started on 2009-11-28: >> >> http://www.mail-archive.com/r-de...@r-project.org/msg18790.html >> >> Still no workable suggestions/solutions AFAIK. >> >> /Henrik >> >> On Wed, Nov 3, 2010 at 2:55 PM, Steve Lianoglou >> <mailinglist.honey...@gmail.com> wrote: >>> Hi all, >>> >>> Sometimes I'll find myself "ctrl-c"-ing like a madman to kill some >>> code that's parallelized via foreach/doMC when I realized that I just >>> set my cpu off to do something boneheaded, and it will keep doing that >>> thing for a while. >>> >>> In these situations, since I interrupted its normal execution, >>> foreach/doMC doesn't "clean up" after itself by killing the processes >>> that were spawned. Furthermore, I believe that when I quit my "main" R >>> session, the spawned processes still remain (there, but idle). >>> >>> I can go in via terminal (or some task manager/activity monitor) and >>> kill them manually, but does foreach (or something else (maybe >>> multicore?)) keep track of the process IDs that it spawned? >>> >>> Is there some simple doCleanup() function I can write to get these R >>> processes and kill them automagically? >>> >>> For what it's worth, I'm running on linux & os x, R-2.12 and the >>> latest versions of foreach/doMC/multicore (though, I feel like this >>> has been true since I've started using foreach/doMC way back when). >>> >>> Thanks, >>> -steve >>> >>> -- >>> Steve Lianoglou >>> Graduate Student: Computational Systems Biology >>> | Memorial Sloan-Kettering Cancer Center >>> | Weill Medical College of Cornell University >>> Contact Info: http://cbio.mskcc.org/~lianos/contact >>> >>> ______________________________________________ >>> 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. >>> >> > -- Steve Lianoglou Graduate Student: Computational Systems Biology | Memorial Sloan-Kettering Cancer Center | Weill Medical College of Cornell University Contact Info: http://cbio.mskcc.org/~lianos/contact ______________________________________________ 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.