R中的信号量(IPC)

问题描述 投票:0回答:1

是否有任何方法可以在R中使用信号量(IPC)?我有几个并行运行的R脚本,我只希望其中的某些(较小)脚本进入关键阶段。在C语言中,很容易通过进程之间共享的named semaphores来实现,但是如何在R中做到这一点呢?

请注意,我的计算在Linux上运行,因此可以使用特定于Linux的解决方案。

r ipc semaphore
1个回答
0
投票

您可以看一下lockfile包装。该软件包使用OS例程安全地创建锁定文件。这可能是最简单的解决方案。

查看链接到的C例程的文档。将它们包装到从R调用的某些C / C ++函数中并不会太困难。使用Rcpp和/或inline包可能只是几行代码。

但是我也想知道您是否真的需要这个。如果您有一些代码并行进行一些计算,然后完成一些计算,那么还有其他解决方案。一种是使用parallel包从R启动您的进程。您可以使用该程序包的功能来控制来自主R进程的同步。另一种解决方案是先运行第一个计算,然后在完成后为第二部分启动新的R会话。启动R会话的开销通常很小(几秒钟)。您可以使用makesnakemake之类的工具进行协调。

© www.soinside.com 2019 - 2024. All rights reserved.