我有一堆不同的 R 进程(从命令行独立启动),它们都需要加载不同的大文件。为了避免阻塞网络,我想添加一个锁/信号量,例如通过一个锁文件,以便他们一个接一个地获取他们的文件。在标准 Linux 系统上,应该只有一个进程能够获得锁。
问问题
1092 次
2 回答
3
虽然我找不到 R 包,但lockfile
可以使用 Linux 命令:
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")
于 2013-03-26T13:15:24.777 回答
1
先前答案的可能更明确的版本。如果您正在访问的文件称为文件名,并且您在单个目录中操作......(如果您使用不同的目录,那么显然将文件名替换为整个路径)
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")
于 2014-03-20T14:58:48.310 回答