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