我在Linux机器上有一个网络驱动器,我试图在两台单独的Linux机器上运行两个进程,以使用排他锁访问该网络驱动器上的文件。我正在使用Python的文件锁库来获取锁,但是当我启动这两个进程时,它们并不仅会访问文件,而是同时访问文件。
令人惊讶的是,当我使用两台Windows机器和相同的网络驱动器执行此模拟时,一切正常。第一个进程访问文件,而另一个进程等待,依此类推。另一方面,对于Linux,这不起作用。仅当我在同一台Linux机器上运行两个进程时,它们才会使用排他锁访问文件。
共享驱动器也在Linux上。
这是我的代码:
import sys
from time import sleep
from filelock import FileLock
for i in range(5):
with FileLock("/usr/share/my_file"):
print("This is process {}.".format(sys.argv[1]))
sleep(2)
print("Bye.")