有没有办法在R进程之间共享锁(例如锁文件)?

时间:2013-03-22 09:12:27

标签: r locking semaphore

我有一堆不同的R进程(从命令行独立启动),它们都需要加载不同的大文件。为了避免堵塞网络,我想添加一个锁/信号量,例如通过锁定文件,以便他们一个接一个地获取他们的文件。在标准的Linux系统上,只有一个进程能够获得锁定。

2 个答案:

答案 0 :(得分:3)

虽然我找不到R包,但可以使用Linux命令lockfile

write("Attempting to get lock", stderr())
system("lockfile /tmp/my_simple_lock")

# Do stuff

write("Releasing lock", stderr())
system("rm -f /tmp/my_simple_lock")

答案 1 :(得分:1)

可能是前一个答案的更明确的版本。如果您访问的文件名为filename,并且您在单个目录中运行...(如果您使用不同的目录,那么显然用整个路径替换filename)

write("Attempting to get lock", stderr())
system("lockfile filename.lock")
\# do whatever you want to the file
write("Releasing lock", stderr())
remove.file("filename.lock")