Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

A python implementation of the three Reader-Writer problems.

Project description

A python implementation of the three Reader-Writer problems.

Not only does it implement the reader-writer problems, it is also compliant with the python lock interface which includes support for timeouts.

For reading about the theory behind the reader-writer problems refer to Wikipedia.

Installation

Install the python package readerwriterlock

python3 -m pip install readerwriterlock

Usage

Initialize a new lock base on your access priority need which is going to be use by the threads:

Reader priority (aka First readers-writers problem)

from readerwriterlock import rwlock
a = rwlock.RWLockRead()

Writer priority (aka Second readers-writers problem)

from readerwriterlock import rwlock
a = rwlock.RWLockWrite()

Fair priority (aka Third readers-writers problem)

from readerwriterlock import rwlock
a = rwlock.RWLockFair()

Pythonic usage example

with a.gen_rlock():
      #Read stuff
with a.gen_wlock():
      #Write stuff

Advanced Usage example

b = a.gen_wlock()
if b.acquire(blocking=True, timeout=5):
      #Do stuff
      b.release()

Live example

Refer to the file rwlock_test.py which can be directly called, it has above 90% line coverage of rwlock.py.

The tests can be initiated by doing

./rwlock_test.py

Build

This project use the BUILDME interface, you may therefore build the project by simply doing:

./BUILDME

Contribute

You are the welcome to contribute.

Project details


Download files

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

Files for readerwriterlock, version 1.0.4
Filename, size File type Python version Upload date Hashes
Filename, size readerwriterlock-1.0.4-py3-none-any.whl (6.3 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size readerwriterlock-1.0.4.tar.gz (5.1 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page