如何创建系统范围的文件锁?

2024-05-15 09:55:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图让许多独立进程使用系统范围的锁来协调它们对文件的写入(请参见这里: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


Tags: 文件from进程系统时间scriptssystemconcurrent
1条回答
网友
1楼 · 发布于 2024-05-15 09:55:44

*NIX支持对文件(或部分文件)应用锁。它要求过程之间相互协作(咨询锁定)。在访问给定的文件或记录之前,每个进程都应该检查它是否被锁定。如果不执行此检查,则没有内置保护以避免可能的损坏。因此,在您的情况下,两个进程都必须使用文件锁定才能工作。在

如果只是记录,那么显式使用LOCK_UN(unlock)是个好主意,尽管当进程退出或文件关闭时,锁会自动释放。在

相关问题 更多 >