如何在R中派生进程

时间:2014-04-13 16:33:57

标签: r fork

我正在尝试理解R的多核包实现的分叉系统。包示例是:

p <- fork()
if (inherits(p, "masterProcess")) {
  cat("I’m a child! ", Sys.getpid(), "\n")
  exit(,"I was a child")
}
cat("I’m the master\n")
unserialize(readChildren(1.5))

但粘贴在R交互式控制台中似乎不起作用。有没有人有一个使用带有R的多核或并行包的fork()的例子?

1 个答案:

答案 0 :(得分:7)

多核软件包中的fork示例适用于我&#39; ;试试example(fork)。 fork仅在非Windows系统上受支持。

我认为parallel中的等价函数是mcparallel()来分叉然后计算表达式,mcollect()来完成后检索结果。所以

id = mcparallel({ Sys.sleep(5); TRUE })

立即返回,但进程正在运行,

mccollect(id)

将在5秒后返回TRUE。除了分叉和主进程之间的集合之外没有其他通信;使用例如套接字来实现双向通信将是有趣的并且没有太大的挑战性。