Python从多个进程锁定和解锁文件

时间:2019-04-22 04:38:15

标签: python python-3.x

我有一个文件xxx.txt,其他Python文件可以访问该文件。当script_1即将写入xxx.txt时,它应该锁定文件,而script_2应该等待文件被script_1释放。

我尝试使用此代码,但未锁定文件。 script_2能够写入文件。

import fcntl, os, signal, time


os.fork()

class TimeoutException(Exception): pass

def signal_handler(signum, frame):
    raise TimeoutException()


f = os.open("xxx.txt", os.O_RDWR|os.O_CREAT)
fcntl.flock(f, fcntl.LOCK_EX)
time.sleep(20)
os.write(f, bytes("oook_0", "utf-8"))
fcntl.flock(f, fcntl.LOCK_UN)
os.close(f)

2 个答案:

答案 0 :(得分:2)

  1. 首先,锁定文件是特定于平台的操作,因此您将需要针对不同的操作系统运行不同的代码。
  2. 其次,就像@Kevin说的here,-“在操作系统级别协调对单个文件的访问充满了您可能不想解决的各种问题。最好的选择是拥有一个协调对该文件的读/写访问的独立过程。”

答案 1 :(得分:-1)

解决了

from filelock import FileLock

with FileLock("lock"):
    with open('lock', mode='w') as file:
        file.write('oook_1')