Skip to main content

RwLock: Reader-Writer lock

Project description

Coverage

RwLock: Reader-Writer lock

Release Note

  1. V1.2:
    1. fix version convert issue in setup.py
  2. V1.1:
    1. Reduce test time
    2. Refactoring
  3. V1.0: first release

Introduction

We can simply protect a shared resource by a lock. But the performance is not good because each reader should run one-by-one.

A Reader-Writer lock can improve the performance by let readers running simultaneously.

By the way, a writer should wait until all readers done. In a frequently read situation, a new reader after the writer can also increase the read count, let read count never decrease to 0. This will starve writer.

RwLock:

  1. Let readers running simultaneously.
  2. Exclude "multiple readers" and each writer.
  3. provide a flag "write_first" to prevent starve writer.

Usage

Install

  1. pip install cy_rwlock
  2. download latest version from https://pypi.org/project/cy_rwlock/#files

Example


from rwlock import RwLock

rwlock = RwLock()

### READER
rwlock.acquire_r()
# read...
rwlock.release_r()

# OR
with rwlock.lock_r():
    # read...

### WRITER
rwlock.acquire_w()
# write...
rwlock.release_w()

# OR
with rwlock.lock_w():
    # write...

Unittest

  • local(windows)
    • run scripts\run.bat
  • github
    • auto run when push

Deploy

  • PyPI version
    • convertd from git tag
  • local(windows)
    • run scripts\deploy.bat
  • github -> PyPI
    • When release in github

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

cy_rwlock-1.5.tar.gz (4.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cy_rwlock-1.5-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file cy_rwlock-1.5.tar.gz.

File metadata

  • Download URL: cy_rwlock-1.5.tar.gz
  • Upload date:
  • Size: 4.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.8.0

File hashes

Hashes for cy_rwlock-1.5.tar.gz
Algorithm Hash digest
SHA256 b1495bcae96fcd30dfea4e2948b39c340ad71c4ede796e2200283f4b40a3abc8
MD5 412998c1febdf1c3d46be1f443eabc08
BLAKE2b-256 3136ba2b622f98e595682280c6a1797a6bd373dac004fcadd3efbf6dcad0995d

See more details on using hashes here.

File details

Details for the file cy_rwlock-1.5-py3-none-any.whl.

File metadata

  • Download URL: cy_rwlock-1.5-py3-none-any.whl
  • Upload date:
  • Size: 6.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.8.0

File hashes

Hashes for cy_rwlock-1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 e74492e47441f94c97adcd42581a6b316673ebf52dcb6b95649a18216196ca12
MD5 308d69d41fb9b3cf2ee4039f9d95a7a5
BLAKE2b-256 a2dd63fa36486478fc177788177048cb474a7b538e731b82c4dc23ae556970a5

See more details on using hashes here.

Supported by

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