用于启用文件锁定的模块
lock的Python项目详细描述
锁定
这是一个启用文件锁定的模块。它使用fcntl来 完成这个。
posix操作系统实现咨询文件锁定。这使得 与同一文件交互而不发生冲突的并发进程, 如果他们首先检查存在的锁是否存在 不同的过程。可以在posix上启用强制文件锁定 通过使用mount-o mand选项和 使操作系统无法编辑锁定的文件。
fcntl功能由^{tt1}在python中实现$ 标准库模块。使用这个,可以以某种方式获取锁 如下所示:
lock_file=open("data.db","a")fcntl.lockf(lock_file,fcntl.LOCK_EX|fcntl.LOCK_NB)
如果文件被锁定,将引发以下异常:
BlockingIOError:[Errno11]Resourcetemporarilyunavailable
使用咨询锁定,代码应该测试A锁的存在。 在编辑文件之前。这是守则的责任,而不是 操作系统,以正确执行锁定。关于 可以通过传递字节来检索当前保存在文件上的锁 对象作为fcntl.fcntl函数的第三个参数 取代fcntl头中指向进程id的指针)。这个 锁信息的访问方式如下:
lock_data=struct.pack("hhllhh",fcntl.F_WRLCK,0,0,0,0,0)fcntl.fcntl(lock_file,fcntl.F_GETLK,lock_data)
如果文件上没有锁,则返回lock_data不变。
示例
下面的代码使用^{tt8}将字典保存到循环中的文件中$ 在保存时锁定文件:
importrandomimportlockwhileTrue:config={"a":1,"b":random.randint(1,2)}lock.save_JSON("config.json",config)
下面的代码使用 lock在加载时锁定文件:
importlockwhileTrue:config=lock.load_JSON("config.json")ifconfig:print(config)
这两段代码可以同时使用。