是否有任何方法可以在R中使用信号量(IPC)?我有几个并行运行的R脚本,我只希望其中的某些(较小)脚本进入关键阶段。在C语言中,很容易通过进程之间共享的named semaphores来实现,但是如何在R中做到这一点呢?
请注意,我的计算在Linux上运行,因此可以使用特定于Linux的解决方案。
您可以看一下lockfile
包装。该软件包使用OS例程安全地创建锁定文件。这可能是最简单的解决方案。
查看链接到的C例程的文档。将它们包装到从R调用的某些C / C ++函数中并不会太困难。使用Rcpp
和/或inline
包可能只是几行代码。
但是我也想知道您是否真的需要这个。如果您有一些代码并行进行一些计算,然后完成一些计算,那么还有其他解决方案。一种是使用parallel
包从R启动您的进程。您可以使用该程序包的功能来控制来自主R进程的同步。另一种解决方案是先运行第一个计算,然后在完成后为第二部分启动新的R会话。启动R会话的开销通常很小(几秒钟)。您可以使用make
或snakemake
之类的工具进行协调。