Skip to main content

RwLock: Reader-Writer lock

Project description

Python Version Pypi Version Code size in bytes

Coverage

License

RwLock: Reader-Writer lock

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.

After 1.6.0, RwLock can support multi-thread(default) and multi-process. For multi-process scenario, use rwlock = RwLock(cross_process=True)

Version control

  • cy-rwlock XX.YY.ZZ
    1. XX.YY match the latest git tag.
    2. ZZ will increase automatically when new commit appear in master branch.
    3. XX: Update when change architecture
    4. YY: Update when add or modify some features
    5. ZZ: Update when bugfix or minor changes.

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.7.1.0.tar.gz (4.6 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.7.1.0-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: cy_rwlock-1.7.1.0.tar.gz
  • Upload date:
  • Size: 4.6 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.42.1 CPython/3.8.1

File hashes

Hashes for cy_rwlock-1.7.1.0.tar.gz
Algorithm Hash digest
SHA256 82935eedea4ebe7084e693b2908d5cc3c42a7ac69e7985f8b7724697370c36a1
MD5 443466ef136d70cdb5b09b310dae33ef
BLAKE2b-256 8f4a8bb091ae80fb3340441828cbac6b23fae6d200f061651359f935ee7109e7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cy_rwlock-1.7.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.1 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.42.1 CPython/3.8.1

File hashes

Hashes for cy_rwlock-1.7.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bfaad8f023b4aead20cbc1d57770f7920f6d3f471aaf4ea5d1d71f1d3a29786d
MD5 9aaac16e101ddc330cb0ba447ae4fe68
BLAKE2b-256 1ff17a3a1d12dc251bdcb1915f311178c6907113d8ed587d7cba3dcd425e1368

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