我正在尝试理解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()的例子?
答案 0 :(得分:7)
多核软件包中的fork
示例适用于我&#39; ;试试example(fork)
。 fork仅在非Windows系统上受支持。
我认为parallel
中的等价函数是mcparallel()
来分叉然后计算表达式,mcollect()
来完成后检索结果。所以
id = mcparallel({ Sys.sleep(5); TRUE })
立即返回,但进程正在运行,
mccollect(id)
将在5秒后返回TRUE。除了分叉和主进程之间的集合之外没有其他通信;使用例如套接字来实现双向通信将是有趣的并且没有太大的挑战性。