Skip to main content

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 -U 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.

Contact

Project:

https://github.com/elarivie/pyReaderWriterLock

Bug tracker:

https://github.com/elarivie/pyReaderWriterLock/issues

Author:

Éric Larivière ericlariviere@hotmail.com

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

readerwriterlock-1.0.5.tar.gz (6.2 kB view hashes)

Uploaded Source

Built Distribution

readerwriterlock-1.0.5-py3-none-any.whl (6.5 kB view hashes)

Uploaded Python 3

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