£ÒÈ÷˺Ͽ - µ»ö°ìÍ÷
- Åê¹Æ¼Ô¡§ ¤ß¤å
- ¥«¥Æ¥´¥ê¡§ ¤Ê¤·
- Í¥ÀèÅÙ¡§ ÉáÄÌ
- ¾õÂÖ¡§ ´°Î»
- Æü»þ¡§ 2009ǯ01·î17Æü 21»þ55ʬ10ÉÃ
- º£¼Â¹Ô¤·¤Æ¤¤¤ëR¤Î´Ä¶¤È¤Þ¤Ã¤¿¤¯Æ±¤¸¥×¥í¥»¥¹¤òºî¤ê¤Þ¤¹¡¥¤Ä¤Þ¤ê¼«Ê¬¼«¿È¤Î¥¯¥í¡¼¥ó¤ò¡Ö»Ò¥×¥í¥»¥¹¡×¤È¤·¤Æ¡¢¼Â¹Ô¡¥
- Rserve¤Ê¤ó¤«¤È¤¤¤Ã¤·¤ç¤Ç¤¹¤Í¡¥
- ¤½¤Î¡Ö»Ò¥×¥í¥»¥¹¡×¤Ë¥³¥Þ¥ó¥É¤òÅϤ·¤Æ¡¢¼Â¹Ô¤µ¤»¤ë¡¥¤Ç¤½¤Î¤È¤¡¢ÅϤ·¤¿À褬ÊÌ¤Î¥×¥í¥»¥¹¤Ê¤Î¤Ç¡¢º£¸«¤Æ¤¤¤ë¼Â¹Ô´Ä¶¡Ê¿Æ¥×¥í¥»¥¹¡Ë¤Ë¤Ï¡¢¤Ê¤Ë¤â±Æ¶Á¤òÍ¿¤¨¤Þ¤»¤ó¡¥
- ¤·¤«¤â¡¢¥ì¥¹¥Ý¥ó¥¹¤¬¤¹¤°µ¢¤Ã¤Æ¤¯¤ë¡Ê΢¤Ç¤ÏÊ̤ÎR¥×¥í¥»¥¹¤¬Æ°¤¤¤Æ¤¤¤ë¡Ë
- CPU¤¬£²¸Ä°Ê¾å¤¢¤Ã¤Æ¡¢ÊÂÎó½èÍý¤Ç¤¤ë¥¹¥¯¥ê¥×¥È¤Ê¤é¡¢¸ú²Ì¤¬¤¢¤ë¤È¤¤¤¦¤³¤È¤Ç¤·¤ç¤¦¡¥
- Ê̤ÎR¤ò¤ï¤¶¤ï¤¶Î©¤Á¾å¤²¤ë¤è¤ê²¿¤¬¤¤¤¤¤«¤È¤¤¤¦¤È
- ¼«Ê¬¼«¿È¤Î¥¯¥í¡¼¥ó¤òfork¤¹¤ë¤Î¤Ç¡¢R¤òΩ¤Á¾å¤²¤ë¤È¤¤¤¦½Å¤¤½èÍý¤¬ÉÔÍס¥¤³¤ÎR¤òΩ¤Á¾å¤²¤ë½èÍý¤Ã¤Æ·ë¹½½Å¤¤¤ó¤Ç¤¹¤è¡¦¡¦¡¦
- ¼«Ê¬¼«¿È¤Î¥¯¥í¡¼¥ó¤Ê¤Î¤Ç¡¢¤½¤³¤Þ¤Ç¤ËºîÀ®¤·¤¿¥á¥â¥ê¾å¤Ë¾è¤Ã¤Æ¤¤¤ëÊÑ¿ô¤ò¡¢¤½¤Î»Ò¥×¥í¥»¥¹¤Ç»²¾È¤Ç¤¤ë¡¥
- ¤â¤Á¤í¤ó¡¢»Ò¥×¥í¥»¥¹¤òΩ¤Á¾å¤²¤¿¸å¤ËºîÀ®¤·¤¿¿Æ¥×¥í¥»¥¹¤ÎÊÑ¿ô¤Ï¡¢»Ò¥×¥í¥»¥¹¤«¤é¤Ï¸«¤¨¤Ê¤¤¡¥
- ¤À¤±¤É¸å¤Ç½Ò¤Ù¤ë¡¢¿Æ»Ò´Ö¤ÎÄÌ¿®¤Ç¡¢ÊÑ¿ô¤È¤¤¤¦¤«R¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò¿Æ»Ò´Ö¤Ç¤ä¤ê¼è¤ê¤¹¤ë¤³¤È¤Ï¤Ç¤¤ë¡¥
- ¤Á¤ç¤Ã¤È¤À¤á¤Ê¤È¤³
- ¼«Ê¬¼«¿È¤Î¥¯¥í¡¼¥ó¤òºîÀ®¤¹¤ë¤Î¤Ç¡¢¿Æ¤È¤Ê¤ëR¤¬Çϼ¯¤Ç¤«¤¤¥á¥â¥ê¤ò»È¤Ã¤Æ¤¤¤¿¤é¡¢»Ò¥×¥í¥»¥¹¤âÇϼ¯¤Ç¤«¤¯¤Ê¤ë¡¥¤â¤Á¤í¤ó¡¢»Ò¥×¥í¥»¥¹¤òºî¤Ã¤¿¸å¤Ë¡¢»Ò¥×¥í¥»¥¹¤Ç¥ª¥Ö¥¸¥§¥¯¥È¤òºï½ü¤·¤Æ£ç£ã¤¹¤ì¤Ð¥á¥â¥ê»ÈÍÑÎ̤ϸº¤ë¤±¤É¡¦¡¦¡¦
- ¤³¤³¤À¤±µ¤¤ò¤Ä¤±¤ì¤Ð¤è¤¤¤«¤Ê¡¦¡¦¡¦¡©¤Ä¤Þ¤ê¿Æ¥×¥í¥»¥¹¤Ï¤Ê¤ë¤Ù¤¯¥¹¥ê¥à¤Ë¤·¤Æ¤ª¤¯¤³¤È¡¦¡¦¡¦
- R¥ª¥Ö¥¸¥§¥¯¥È¤Î¥×¥í¥»¥¹´Ö¤Î¤ä¤ê¼è¤ê¤Ï¡ÚRaw Vectors¡Û¤Ç¤ä¤ê¼è¤ê¤¹¤ë¡¥¡ÚRaw Vectors¡Û¤ËÊÑ´¹¤Ç¤¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È¤ÏÊ̤Υª¥Ö¥¸¥§¥¯¥È¤Ëʬ²ò¤·¤Æ¤ä¤ê¼è¤ê¤¹¤ëɬÍפ¬¤¢¤ë¡¥¥Ç¡¼¥¿¥Õ¥ì¡¼¥à¤Ê¤É¡¢¥ê¥¹¥È·Á¼°¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ï¤½¤Î¤Þ¤Þ¤Ç¤Ï¡¢¡ÚRaw Vectors¡Û¤ËÊÑ´¹¤Ç¤¤Ê¤¤¤Î¤Ç¡¢Ê¬²ò¤¹¤ëɬÍפ¬¤¢¤ë¡¥
- ¤³¤ì¤Ê¤ó¤È¤«¤Ê¤é¤Ê¤¤¤«¤Ê¤¡¡¦¡¦¡¦
- ¡Öparallel¡×¤È¤«¡Ömclapply¡×¤È¤«¡¢´Êñ¤Ë¡©»È¤¨¤ë´Ø¿ô¤â¤¢¤ë¤±¤É¡¢¤ä¤Ã¤Ñ¤ê»Ò¥×¥í¥»¥¹¤È²ñÏäò¤·¤¿¤¤¤Î¤Ç¡¢¤½¤³¤é¤Ø¤ó¤«¤é¡¥
> f <- fork()
> >
- ¤Ê¤ó¤È¡¢¤½¤³¤Ï»Ò¥×¥í¥»¥¹¤ÎÀ¤³¦¡¥¥¨¥ó¥¿¡¼¤Ç²þ¹Ô¤¹¤ë¤È¡¢¿Æ¤ÎÀ¤³¦¤ËÌá¤ê¤Þ¤¹¡¥
- °ì¸ÄÌܤΡÖ>¡×¤¬¿Æ¥×¥í¥»¥¹¤Î¥×¥í¥ó¥×¥È¡¥£²¸ÄÌܤΡÖ>¡×¤¬»Ò¥×¥í¥»¥¹¤Î¥×¥í¥ó¥×¥È¡¥¤³¤Î¾õÂ֤ǰʲ¼¤Î¤è¤¦¤ËÆþÎϤ·¤Æ¤ß¤Þ¤¹¡¥
> > iris2 <- iris[,1]
- ¿Æ¥×¥í¥»¥¹¤È»Ò¥×¥í¥»¥¹Î¾ÊýÂÔ¤Á¼õ¤±¤Æ¤¤¤ë¤Î¤Ç¡¢¿Æ¥×¥í¥»¥¹¤Ç¤âiris2¤È¤¤¤¦¥ª¥Ö¥¸¥§¥¯¥È¤¬¤Ç¤¤Þ¤¹¡¥
- ¤³¤ì¤Ç¡¢»Ò¥×¥í¥»¥¹¤Îɸ½àÆþÎϤϽªÎ»¤·¤Þ¤¹¡¥
- ¤³¤Îiris2¤¬»Ò¥×¥í¥»¥¹¤Ç¤âºî¤é¤ì¤Æ¤¤¤ë¤«³Îǧ¤·¤Þ¤¹¡¥
> sendChildStdin(f,"sendMaster(iris2)\n")
sendMaster(iris2)
[1] TRUE
> [1] TRUE
- »Ò¥×¥í¥»¥¹¡Ö£æ¡×¤Îɸ½àÆþÎϤˡÖsendMaster(iris2)\n¡×¤È¤¤¤¦¥³¥Þ¥ó¥É¤òÁ÷¤ê¤Þ¤¹¡¥¡ÖsendMaster¡×´Ø¿ô¤Ï¡¢»Ò¥×¥í¥»¥¹¤«¤é¿Æ¥×¥í¥»¥¹¤Ë¥ª¥Ö¥¸¥§¥¯¥È¤ò¥×¥Ã¥·¥å¤¹¤ë´Ø¿ô¤Ç¤¹¡¥
- ¤³¤ì¤ò¿Æ¥×¥í¥»¥¹¤Ç¼õ¤±¼è¤ê¤Þ¤¹¡¥
> s <- selectChildren(f)
> s
[1] 16340
> r <- readChild(f)
- ¤Þ¤º¡ÖselectChildren¡×´Ø¿ô¤Ç»Ò¥×¥í¥»¥¹¤¬Æɤ߼è¤ê¤Ç¤¤ë¤«¤É¤¦¤«¤ò³Îǧ¤·¤Þ¤¹¡¥º£¡¢Æɤ߼è¤ì¤ë¾õÂ֤ʤΤǡ¢¡ÖreadChild¡×´Ø¿ô¤ò»È¤Ã¤Æ¡¢»Ò¥×¥í¥»¥¹¤«¤éÁ÷¤é¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ò¼õ¤±¼è¤ê¤Þ¤¹¡¥
- °Ê²¼¼õ¤±¼è¤Ã¤¿¡Ö£ò¡×¤ÎÃæ¿È
> r
[1] 58 0a 00 00 00 02 00 02 08 01 00 02 03 00 00 00 00 0e 00 00 00 96 40 14
[25] 66 66 66 66 66 66 40 13 99 99 99 99 99 9a 40 12 cc cc cc cc cc cd 40 12
[49] 66 66 66 66 66 66 40 14 00 00 00 00 00 00 40 15 99 99 99 99 99 9a 40 12
¡¦¡¦¡¦¡Ê³¤¯¡Ë
- ¤³¤ì¤¬¤¤¤ï¤æ¤ë¡ÚRaw Vectors¡Û¡¥iris2¤Î¡ÚRaw Vectors¡Û¤é¤·¤¤¤Ç¤¹¡¥ÉáÄ̤Υª¥Ö¥¸¥§¥¯¥È¤Ëľ¤·¤Þ¤¹¡¥
> unserialize(r)
[1] 5.1 4.9 4.7 4.6 5.0 5.4 4.6 5.0 4.4 4.9 5.4 4.8 4.8 4.3 5.8 5.7 5.4 5.1
[19] 5.7 5.1 5.4 5.1 4.6 5.1 4.8 5.0 5.0 5.2 5.2 4.7 4.8 5.4 5.2 5.5 4.9 5.0
[37] 5.5 4.9 4.4 5.1 5.0 4.5 4.4 5.0 5.1 4.8 5.1 4.6 5.3 5.0 7.0 6.4 6.9 5.5
[55] 6.5 5.7 6.3 4.9 6.6 5.2 5.0 5.9 6.0 6.1 5.6 6.7 5.6 5.8 6.2 5.6 5.9 6.1
[73] 6.3 6.1 6.4 6.6 6.8 6.7 6.0 5.7 5.5 5.5 5.8 6.0 5.4 6.0 6.7 6.3 5.6 5.5
[91] 5.5 6.1 5.8 5.0 5.6 5.7 5.7 6.2 5.1 5.7 6.3 5.8 7.1 6.3 6.5 7.6 4.9 7.3
[109] 6.7 7.2 6.5 6.4 6.8 5.7 5.8 6.4 6.5 7.7 7.7 6.0 6.9 5.6 7.7 6.3 6.7 7.2
[127] 6.2 6.1 6.4 7.2 7.4 7.9 6.4 6.3 6.1 7.7 6.3 6.4 6.0 6.9 6.7 6.9 5.8 6.8
[145] 6.7 6.7 6.3 6.5 6.2 5.9
- ¡ÖsendChildStdin¡×´Ø¿ô¤ò»È¤¤¤Þ¤¹¡¥£²ÈÖÌܤΰú¿ô¤Ë¡ÚRaw Vectors¡Û·Á¼°¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òÅϤ¹¤ÈÎɤ¤¤é¤·¤¤¡¥
> sendChildStdin(f, as.raw(r))
- ¥Ð¥°¤Ã¤Æ¤Þ¤¹¤«¤Ê¡¦¡¦¡¦
- ¤Ê¤é¥À¥ó¥×¤·¤¿¥Æ¥¥¹¥È¤òÅϤ»¤Ð¤¤¤¤¤«¡¦¡¦¡¦
iris3 <- iris
textCn <- textConnection("tmp", "w")
dump("iris3", textCn)
close(textCn)
tmp
[1] "`iris3` <-"
[2] "structure(list(Sepal.Length = c(5.1, 4.9, 4.7, 4.6, 5, 5.4, 4.6, "
[3] "5, 4.4, 4.9, 5.4, 4.8, 4.8, 4.3, 5.8, 5.7, 5.4, 5.1, 5.7, 5.1, "
¡¦¡¦¡¦¡Ê³¤¯¡Ë
invisible(sendChildStdin(f, "multicore:::closeStdout()\n"))
tmp <- paste("invisible(", paste(tmp, collapse="\n"), ")\n", sep="")
sendChildStdin(f, tmp)
- ¤³¤ì¤Ç¤Ç¤¤Æ¤¤¤ë¤Ï¤º¡¥
- ¡ÖsendChildStdin(f, "multicore:::closeStdout()\n")¡×¤Ï»Ò¥×¥í¥»¥¹¤Î¤Û¤¦¤Ç¡¢½ÐÎϤµ¤ì¤ëɸ½à½ÐÎϤòÍÞÀ©¤¹¤ë¡¥¤³¤ì¤¬¤Ê¤¤¤È¡¢¤¤¤Á¤¤¤Áɽ¼¨¤¬¤µ¤ì¤Æ¤ß¤Ë¤¯¤¤¤Î¤Ç¡¥¤Ç¤â³«È¯Ã桦¥Ç¥Ð¥Ã¥°Ãæ¤Ï½ÐÎϤϤ¢¤Ã¤¿¤Û¤¦¤¬¤¤¤¤¤Ç¤¹¤Í¡¦¡¦¡¦
- ¤³¤Î¸å¤í¤Î¤Û¤¦¤Î¡Ö»Ò¥×¥í¥»¥¹Æâ¤Ç¥³¥Þ¥ó¥É¤òɾ²Á¤¹¤ë´Ø¿ô¤òºî¤ë¡×¤ò¤´»²¾È¤¯¤À¤µ¤¤
- ¤¤¤Á¤¤¤Á¡¢É¸½à½ÐÎϤòÍÞÀ©¤¹¤ë¤Î¤È¤«¤á¤ó¤É¤¯¤µ¤¤¤Î¤Ç»Ò¥×¥í¥»¥¹ºî¤ë¤È¤¤Ï¡Öparallel¡×»È¤Ã¤¿¤Û¤¦¤¬Îɤ¤¤«¤â¡¥
> f <- parallel(1:10, silent = T)
> f
parallelJob: processID=16533
- ¡Ö£±¡§£±£°¡×¤Î¤È¤³¤í¤Ï¡¢²¿¤Ç¤â¤¤¤¤¤Ç¤¹¡¥¡Ösilent = T¡×¤Ç¡¢¡Ömulticore:::closeStdout()¡×¤ò´Ø¿ôÆâÉô¤Ç¤ä¤Ã¤Æ¤¯¤ì¤Þ¤¹¡¥
- ¤¿¤À¤·¡¢¤³¤Î¤Þ¤Þ¤À¤È¡Ö£±¡§£±£°¡×¤Î·ë²Ì¤ò¿Æ¥×¥í¥»¥¹¤ËÊÖ¤½¤¦¤È¤·¤Æ¤¤¤ë¤Î¤Ç¡¢
collect(f)
- ¤Ç¡¢·ë²Ì¤ò¼õ¤±¼è¤Ã¤Æ¤ª¤¤¤¿¤Û¤¦¤¬Îɤ¤¡©
> collect(f)
$`16589`
[1] 1 2 3 4 5 6 7 8 9 10
- ¤³¤Î»Ò¥×¥í¥»¥¹¤ò£±¸Äºî¤Ã¤¿¾õÂ֤ǡ¢°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡¥
$ ps -ejH
¡¦¡¦¡¦
12488 12488 12488 pts/2 00:00:00 bash
16584 16584 12488 pts/2 00:00:00 R
16589 16584 12488 pts/2 00:00:00 R
¡¦¡¦¡¦
- Àè¤Û¤É»Ò¥×¥í¥»¥¹¤«¤é¿Æ¥×¥í¥»¥¹¤Ø¥ª¥Ö¥¸¥§¥¯¥È¤òÅϤ¹¤È¤¤Ë¡¢¤¤¤í¤¤¤í¤È¤á¤ó¤É¤¯¤µ¤¤¤³¤È¤ò¤·¤¿¤±¤ì¤É¡¢¡Öcollect¡×´Ø¿ô¤ò»È¤¦¤È¤â¤·¤«¤·¤Æ¤é¤¯¤Á¤ó¡©
sendChildStdin(f,"iris4 <- iris[,2]\n")
sendChildStdin(f,"sendMaster(iris4)\n")
collect(f)
> sendChildStdin(f,"iris4 <- iris[,2]\n")
Error in FUN(16589L[[1L]], ...) : child 16589 doesn't exist
- ¤Ã¤Æ¡¢»Ò¥×¥í¥»¥¹¤¬¤¤¤Ê¤¡¤¡¤¡¤¡¤¤¡¥
12488 12488 12488 pts/2 00:00:00 bash
16584 16584 12488 pts/2 00:00:00 R
16589 16584 12488 pts/2 00:00:00 R <defunct>
- ¤ª¤Ê¤¯¤Ê¤ê¤Ë¤Ê¤Ã¤Æ¤Þ¤¹¡¦¡¦¡¦¡¥»ÅÍͤǤ¹¤«¡©¡Öcollect¡×¤·¤¿¤é¥×¥í¥»¥¹»¦¤·¤Á¤ã¤¦¤ó¤À¤í¤¦¤«¡¦¡¦¡¦
- ¤É¤¦¤â¡Öparallel¡×´Ø¿ô¤ÎÃæ¤Ç¡¢¥ª¥Ö¥¸¥§¥¯¥È¤òÅϤ·¤¿¸å¤Ë¡¢¡Öexit(0)¡×¤È¤¤¤¦¤Î¤Ç¡¢»¦¤·¤Á¤ã¤Ã¤Æ¤ë¤ß¤¿¤¤¤Ç¤¹¡¥¡Öparallel¡×¤ò»²¹Í¤Ë´Ø¿ô¤òºî¤Ã¤Æ¤ß¤¿¡¥
createChild <-
function (name, mc.set.seed = FALSE, silent = FALSE)
{
f <- fork()
env <- parent.frame()
if (inherits(f, "masterProcess")) {
#on.exit(exit(1, structure("fatal error in wrapper code",
# class = "try-error")))
if (isTRUE(mc.set.seed))
set.seed(Sys.getpid())
if (isTRUE(silent))
multicore:::closeStdout()
#sendMaster(try(eval(expr, env), silent = TRUE))
#exit(0)
}
if (!missing(name) && !is.null(name))
f$name <- as.character(name)[1]
class(f) <- c("parallelJob", class(f))
f
}
> f <- createChild(silent = T)
> f
parallelJob: processID=16756
> sendChildStdin(f,"iris4 <- iris[,2]\n")
[1] TRUE
> sendChildStdin(f,"sendMaster(iris4)\n")
[1] TRUE
> collect(f,wait=F)
[[1]]
[1] 3.5 3.0 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 3.7 3.4 3.0 3.0 4.0 4.4 3.9 3.5
[19] 3.8 3.8 3.4 3.7 3.6 3.3 3.4 3.0 3.4 3.5 3.4 3.2 3.1 3.4 4.1 4.2 3.1 3.2
[37] 3.5 3.6 3.0 3.4 3.5 2.3 3.2 3.5 3.8 3.0 3.8 3.2 3.7 3.3 3.2 3.2 3.1 2.3
[55] 2.8 2.8 3.3 2.4 2.9 2.7 2.0 3.0 2.2 2.9 2.9 3.1 3.0 2.7 2.2 2.5 3.2 2.8
[73] 2.5 2.8 2.9 3.0 2.8 3.0 2.9 2.6 2.4 2.4 2.7 2.7 3.0 3.4 3.1 2.3 3.0 2.5
[91] 2.6 3.0 2.6 2.3 2.7 3.0 2.9 2.9 2.5 2.8 3.3 2.7 3.0 2.9 3.0 3.0 2.5 2.9
[109] 2.5 3.6 3.2 2.7 3.0 2.5 2.8 3.2 3.0 3.8 2.6 2.2 3.2 2.8 2.8 2.7 3.3 3.2
[127] 2.8 3.0 2.8 3.0 2.8 3.8 2.8 2.8 2.6 3.0 3.4 3.1 3.0 3.1 3.1 3.1 2.7 3.2
[145] 3.3 3.0 2.5 3.0 3.4 3.0
> collect(f,wait=F)
NULL
- »Ò¥×¥í¥»¥¹¤â»à¤ó¤Ç¤Ê¤¤¤Î¤ÇOK
- ÀµÄ¾¡¢¾¡¼ê¤Ë»à¤ó¤Ç¤ë¤³¤È¤¬Â¿¤¤¤Î¤ÇÎɤ¯¤ï¤«¤ê¤Þ¤»¤ó¡¦¡¦¡¦¡¥¤¬
kill(f, SIGQUIT)
16790 16584 12488 pts/2 00:00:00 R <defunct>
- ¤³¤¦¤¤¤¦¾õÂ֤ˤϤ¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡¥<defunct>¤Ë¤·¤Ê¤¤¤Ç¡¢¿Æ¥×¥í¥»¥¹¤ÎR¤ò½ªÎ»¤·¤Æ¤·¤Þ¤¦¤È
16684 16584 12488 pts/2 00:00:00 R
16685 16584 12488 pts/2 00:00:00 R
16740 16584 12488 pts/2 00:00:00 R
16754 16584 12488 pts/2 00:00:00 R
16755 16584 12488 pts/2 00:00:00 R
- ¤³¤ó¤Ê¤Ò¤É¤¤¤³¤È¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¤Î¤Ç¡¢¤´Ãí°Õ¡¥
- ¿Æ¤ÎRÆâ¤Ç¡¢»Ò¥×¥í¥»¥¹¤Î¥Õ¥©¡¼¥«¥¹¤¬¤Ê¤¯¤Ê¤ëÁ°¤Ë¡Ökill(***, SIGQUIT)¡×¤Ç<defunct>¤Ë¤·¤Æ¤ª¤¤Þ¤·¤ç¤¦¡¥
- ¤È¤¤¤¦¤«¡ÖRserve¡×¤ß¤¿¤¤¤Ë¡¢¤¤Á¤ó¤È½ª¤ï¤ëÊýË¡¤Ï¤Ê¤¤¤ó¤Ç¤¹¤«¡©¡©¡©
- ¡ÖrmChild¡×¤È¤¤¤¦´Ø¿ô¤òȯ¸«¡¥¤³¤ì¤Ç»Ò¥×¥í¥»¥¹¤òÍî¤È¤¹¤³¤È¤¬¤Ç¤¤½¤¦¡¥
- ¥Þ¥Ë¥å¥¢¥ë¤Ë¤ÏºÜ¤Ã¤Æ¤Ê¤¤¤Í¡¦¡¦¡¦
> kill(f, SIGQUIT)
> multicore:::rmChild(f)
[1] TRUE
- »Ò¥×¥í¥»¥¹¤³¤ì¤Ç¤Ï¡¢Íî¤Á¤Þ¤»¤ó¤Í¡¦¡¦¡¦
childEval <-
function( child, cmd, send=F ){
if( !is.character(cmd) ){
print("'cmd' must be character...")
return
}
#cmd <- paste(cmd, "\n", sep="")
if( send ) cmd <- paste("sendMaster(try({",cmd,"}, silent=T))\n", sep="")
else cmd <- paste("try({",cmd,"}, silent=T)\n", sep="")
#cat(cmd)
ret <- sendChildStdin(child, cmd)
s <- selectChildren(child)
if (is.logical(s) || !length(s)){
} else{
cat("ready to get data...\n")
}
#if( is.numeric(s) ) cat("ready to get data...\n")
ret
}
childEval(f, "x<-1:10")
collect(f, wait=F)
- ·ë¶É¡ÖsendChildStdin¡×´Ø¿ô¤ÇÀ¸¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò¤½¤Î¤Þ¤ÞÅϤ¹¤³¤È¤Ï¤Ç¤¤Ê¤¤¤Î¤Ç¡¥
textCn <- textConnection("sendCmd", "w")
dump("iris3", textCn)
close(textCn)
sendCmd
[1] "`iris3` <-"
[2] "structure(list(Sepal.Length = c(5.1, 4.9, 4.7, 4.6, 5, 5.4, 4.6, "
[3] "5, 4.4, 4.9, 5.4, 4.8, 4.8, 4.3, 5.8, 5.7, 5.4, 5.1, 5.7, 5.1, "
¡¦¡¦¡¦¡Ê³¤¯¡Ë
#sendCmd <- paste("invisible(", paste(sendCmd, collapse="\n"), ")\n", sep="")
sendCmd <- paste(sendCmd, collapse="\n")
childEval(f, sendCmd)
#sendChildStdin(f, sendCmd)
sendObj2Child <-
function( child, obj ){
textCn <- textConnection("sendCmd", "w")
dump(deparse(substitute(obj)), textCn)
close(textCn)
sendCmd <- paste(sendCmd, collapse="\n")
#cat(sendCmd)
childEval(child, sendCmd)
}
- ¤À¤±¤É·ë¶É¡¢Ê¸»úÎó¤ÎŤµ¤Ë¤âÀ©¸Â¤¬¤¢¤ë¤Î¤Ç¡¢¤³¤ì¤â°ìÈÌŪ¤Ë¤Ï»È¤¨¤Ê¤¤¡¥
- ¾®¤µ¤Ê¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤·¤«»È¤¨¤Þ¤»¤ó¡¥
getObj <-
function( child, what ){
if( !is.character(what) ){
print("'what' must be character...")
return
}
cmd <- paste("sendMaster(try({",what,"}, silent=T))\n", sep="")
print(cmd)
ret <- sendChildStdin(child, cmd)
s <- selectChildren(child)
if( is.numeric(s) ) return( collect(child, wait=F) )
NA
}
getObj (f, "x")
- ¤³¤Ã¤Á¤Ï¤Ä¤«¤¨¤Ê¤¤¤Ê¡¦¡¦¡¦
£ÒÈ÷˺Ͽ /¾õÂÖ¶õ´Ö¥â¥Ç¥ê¥ó¥°/donlp2/¤½¤Î¾¤Î¥á¥â