我正在尝试理解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()的例子?
fork多核包中的例子"适合我"; 试试example(fork).fork仅在非Windows系统上受支持.
我认为等效的函数parallel是mcparallel()fork,然后计算表达式,并mcollect()在完成后检索结果.所以
id = mcparallel({ Sys.sleep(5); TRUE })
Run Code Online (Sandbox Code Playgroud)
立即返回,但进程正在运行,并且
mccollect(id)
Run Code Online (Sandbox Code Playgroud)
5秒后返回TRUE.除了分叉和主进程之间的集合之外没有其他通信; 使用例如套接字实现双向通信将是有趣的并且没有太大的挑战性.
| 归档时间: |
|
| 查看次数: |
2993 次 |
| 最近记录: |