そのようなプロセスをフォークできることさえ知りませんでした。少し遊んだ後、sendChildStdin
チェックすべき機能を見つけました。これは、子プロセスにシグナルを送る少なくとも 1 つの方法です。次に例を示します。
f<- function () {
message<-scan(n = 1, quiet = TRUE, what='character')
return(message)
}
p <- mcparallel(f())
a <- 1
# The message shouldn't contain spaces and should end with a newline.
parallel:::sendChildStdin(p, "created\n")
mccollect(p)[[1]]
[1] "created"
誤解しないでください。R は、本格的な作業を行う場合はおそらく必要な言語ではありませんが、軽いアプリケーションでは機能する可能性があります。
以前に RStudio でコードをテストしたことがあり、動作しているように見えましたが、成功と見分けがつかないほど失敗していました。scan
とにかく、基本的にプロセスを待ちません。たとえば、これは決して完了しないはずですが、完了します (RStudio のみ)
f<- function () {
message<-scan(n = 1, quiet = TRUE, what='character')
return(message)
}
p <- mcparallel(f())
# parallel:::sendChildStdin(p, "created\n")
mccollect(p)[[1]]
# character(0)