基于文件的linux和windows python锁
locket的Python项目详细描述
locket实现了一个可以被多个进程使用的锁,前提是它们使用相同的路径。
importlocket# Wait for lockwithlocket.lock_file("path/to/lock/file"):perform_action()# Raise error if lock cannot be acquired immediatelywithlocket.lock_file("path/to/lock/file",timeout=0):perform_action()# Raise error if lock cannot be acquired after thirty secondswithlocket.lock_file("path/to/lock/file",timeout=30):perform_action()# Without context managers:lock=locket.lock_file("path/to/lock/file")try:lock.acquire()perform_action()finally:lock.release()
锁在很大程度上表现为(不可重入)lock线程中的实例 标准库中的模块。具体来说,他们的行为是:
- 锁由被锁定的文件唯一标识, 在同一个过程中,在不同的过程中。
- 锁处于锁定或解锁状态。
- 当锁被解锁时,调用acquire()将立即返回并更改 锁定状态为锁定。
- 当锁被锁定时,调用acquire()将被阻塞,直到锁状态 更改为unlocked,或直到超时过期。
- 如果进程持有锁,则该进程中的任何线程都可以调用 将状态更改为unlocked。
- 未定义fork之后的锁行为。