我有许多不同的R进程(从命令行独立启动),它们都需要加载不同的大文件。为了避免网络拥塞,我想添加锁/信号量,例如通过锁文件,以便它们一个接一个地获取文件。在标准Linux系统上,只有一个进程应该能够获取锁。
我有许多不同的R进程(从命令行独立启动),它们都需要加载不同的大文件。为了避免网络拥塞,我想添加锁/信号量,例如通过锁文件,以便它们一个接一个地获取文件。在标准Linux系统上,只有一个进程应该能够获取锁。
虽然我找不到一个 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")
file.remove("/tmp/my_simple_lock")
来代替 system("rm -f /tmp/my_simple_lock")
。 - blueblobwrite("Attempting to get lock", stderr())
system("lockfile filename.lock")
\# do whatever you want to the file
write("Releasing lock", stderr())
remove.file("filename.lock")