Skip to main content

A python package that provides useful locks

Project description

Fasteners

Documentation status Downloads Latest version

Cross-platform locks for threads and processes.

🔩 Install

pip install fasteners

🔩 Usage

Lock for processes has the same API as the threading.Lock for threads:

import fasteners
import threading

lock = threading.Lock()                                 # for threads
lock = fasteners.InterProcessLock('path/to/lock.file')  # for processes

with lock:
    ... # exclusive access

# or alternatively    

lock.acquire()
... # exclusive access
lock.release()

Reader Writer lock has a similar API, which is the same for threads or processes:

import fasteners

rw_lock = fasteners.ReaderWriterLock()                                 # for threads
rw_lock = fasteners.InterProcessReaderWriterLock('path/to/lock.file')  # for processes

with rw_lock.write_lock():
    ... # write access

with rw_lock.read_lock():
    ... # read access

# or alternatively

rw_lock.acquire_read_lock()
... # read access
rw_lock.release_read_lock()

rw_lock.acquire_write_lock()
... # write access
rw_lock.release_write_lock()

🔩 Overview

Python standard library provides a lock for threads (both a reentrant one, and a non-reentrant one, see below). Fasteners extends this, and provides a lock for processes, as well as Reader Writer locks for both threads and processes. Definitions of terms used in this overview can be found in the glossary.

The specifics of the locks are as follows:

Process locks

The fasteners.InterProcessLock uses fcntl on Unix-like systems and msvc _locking on Windows. As a result, if used cross-platform it guarantees an intersection of their features:

lock reentrant mandatory
fcntl
_locking
fasteners.InterProcessLock

The fasteners.InterProcessReaderWriterLock also uses fcntl on Unix-like systems and LockFileEx on Windows. Their features are as follows:

lock reentrant mandatory upgradable preference
fcntl reader
LockFileEx reader
fasteners.InterProcessReaderWriterLock reader

Thread locks

Fasteners does not provide a simple thread lock, but for the sake of comparison note that the threading module provides both a reentrant and non-reentrant locks:

lock reentrant mandatory
threading.Lock
threading.RLock

The fasteners.ReaderWriterLock at the moment is as follows:

lock reentrant mandatory upgradable preference
fasteners.ReaderWriterLock writer

If your threads are created by some other means than the standard library threading module (for example eventlet), you may need to provide the corresponding thread identification and synchronisation functions to the ReaderWriterLock.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fasteners-0.18.tar.gz (17.8 kB view details)

Uploaded Source

Built Distribution

fasteners-0.18-py3-none-any.whl (18.5 kB view details)

Uploaded Python 3

File details

Details for the file fasteners-0.18.tar.gz.

File metadata

  • Download URL: fasteners-0.18.tar.gz
  • Upload date:
  • Size: 17.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.4

File hashes

Hashes for fasteners-0.18.tar.gz
Algorithm Hash digest
SHA256 cb7c13ef91e0c7e4fe4af38ecaf6b904ec3f5ce0dda06d34924b6b74b869d953
MD5 d6f7b1c1399a3ac13345359944fdaeaf
BLAKE2b-256 f59ae613fc7f7fa157bea028d8d823a13ba5583a49a2dea926ca86b6cbf0fd00

See more details on using hashes here.

File details

Details for the file fasteners-0.18-py3-none-any.whl.

File metadata

  • Download URL: fasteners-0.18-py3-none-any.whl
  • Upload date:
  • Size: 18.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.4

File hashes

Hashes for fasteners-0.18-py3-none-any.whl
Algorithm Hash digest
SHA256 1d4caf5f8db57b0e4107d94fd5a1d02510a450dced6ca77d1839064c1bacf20c
MD5 a9fccaad229dbab15c3fcfb3c674c0e2
BLAKE2b-256 bca27d35ba2c8d9963398fcec49cd814e50a6b920d213928f06fdbbf8aa3289b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page