如何在R中派生进程

Ben*_*rek 5 fork r

我正在尝试理解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))
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*gan 7

fork多核包中的例子"适合我"; 试试example(fork).fork仅在非Windows系统上受支持.

我认为等效的函数parallelmcparallel()fork,然后计算表达式,并mcollect()在完成后检索结果.所以

id = mcparallel({ Sys.sleep(5); TRUE })
Run Code Online (Sandbox Code Playgroud)

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

mccollect(id)
Run Code Online (Sandbox Code Playgroud)

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