我试图让许多独立进程使用系统范围的锁来协调它们对文件的写入(请参见这里:Concurrent file accesses from different scripts python)
锁需要跨越整个系统,因为进程是在不同时间独立生成的。这里:System-wide mutex in Python on Linux我读到{
1号航站楼
>>> import fcntl
>>> f = open('myfile', 'w')
>>> fcntl.lockf(f, fcntl.LOCK_EX)
[Detach from terminal]
2号航站楼
^{pr2}$如果我检查文件,它包含“hello”。所以没有锁!我做错什么了?我尝试了ubuntu16.04和macOS High sierra,得到了相同的结果。我使用的是python3.6
*NIX支持对文件(或部分文件)应用锁。它要求过程之间相互协作(咨询锁定)。在访问给定的文件或记录之前,每个进程都应该检查它是否被锁定。如果不执行此检查,则没有内置保护以避免可能的损坏。因此,在您的情况下,两个进程都必须使用文件锁定才能工作。在
如果只是记录,那么显式使用
LOCK_UN
(unlock)是个好主意,尽管当进程退出或文件关闭时,锁会自动释放。在相关问题 更多 >
编程相关推荐