The fasteners module includes the following:
Locking decorator
Helpful locked decorator (that acquires instance objects lock(s) and
acquires on method entry and releases on method exit).
Reader-writer locks
Multiple readers (at the same time). Single writers (blocking any
readers). Helpful read_locked and write_locked decorators.
Inter-process locks
Single writer using file based locking (these automatically release
on process exit, even if __release__ or __exit__ is never called).
Helpful interprocess_locked decorator.
Generic helpers
A try_lock helper context manager that will attempt to acquire a
given lock and provide back whether the attempt passed or failed (if
it passes, then further code in the context manager will be ran with
the lock acquired).