fcntl 加锁模块
#!/usr/bin/python # coding:utf8 import os import sys import time import fcntl # 导入模块 class FLOCK(object): def __init__(self, name): """ :param name: 文件名 """ self.fobj = open(name, 'w') self.fd = self.fobj.fileno() def lock(self): try: fcntl.lockf(self.fd, fcntl.LOCK_EX | fcntl. LOCK_NB) # LOCK_NB: 使用了fcntl.LOCK_NB,已有进程对该文件已加锁,本进程得不到锁时直接退出,不阻塞。如果不加非阻塞参数,得不到锁就卡在这里一直傻等着直到拿到锁 print('给文件加锁,稍等 ... ...') time.sleep(20) return True except Exception as e : print('文件加锁,无法执行,请稍后运行。\n',e) return False def unlock(self): self.fobj.close() print('已解锁') if __name__ == "__main__": locker = FLOCK(sys.argv[1]) a