如何在linux中的python进程之间锁定目录?
我有两个(或更多)
python进程在运行,并且想要为共享资源创建类似于
exclusion mutex的概念.在这种情况下,“共享资源”是一个目录.我最容易/标准地/等等如何实现互斥锁?每个进程同意检查的隐藏.lock文件,如果存在,则将其PID作为新行附加,然后在有权访问该文件时弹出它们的PID?
我基本上只是想清除一个目录,并确保在我清除它时没有其他进程尝试读取或写入它. 是否有标准的linux方式这样做?也许我可以用python的shell行执行某些操作? 解决方法
Linux的
Linux中有两种标准类型的锁定:advisory locking(在POSIX中指定)和mandatory locking(特定于Linux). 但是,它们都只能应用于文件,而不能应用于目录.所以是的,你需要一个锁文件.它假定所有用户都应该知道锁文件并在访问目录之前获取锁.因此,强制锁定在这里没有帮助,您需要建议锁定. Linux中有三种咨询文件锁: > Python 在Python中,flock(),lockf()和fcntl()函数可通过 这是一个例子: import flock with open('/my/dir/lockfile','w') as fp: with flock.Flock(fp,flock.LOCK_EX) as lock: pass # exclusive lock is acquired here PS. 使用这种方法,如果不了解您的锁文件,则无法阻止随机进程访问您的目录.可能使用支持强制目录锁的FUSE实现文件系统,但我不知道这样的实现. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |