Skip to main content

RwLock: Reader-Writer lock

Project description

Coverage

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)

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.6.2.tar.gz (4.2 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.6.2-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: cy_rwlock-1.6.2.tar.gz
  • Upload date:
  • Size: 4.2 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.2 CPython/3.8.0

File hashes

Hashes for cy_rwlock-1.6.2.tar.gz
Algorithm Hash digest
SHA256 1bab14a118a3923c644215ec766c9bddb8c7b77929470cdfb3984d8e35cb9a0c
MD5 5cbb56e3b0a6f1fc91a439c15cb9bde0
BLAKE2b-256 3da1b76b710def957a32e651e3a8d6e2e42accdfb967c05df68b8e5507c5dbdb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cy_rwlock-1.6.2-py3-none-any.whl
  • Upload date:
  • Size: 6.8 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.2 CPython/3.8.0

File hashes

Hashes for cy_rwlock-1.6.2-py3-none-any.whl
Algorithm Hash digest
SHA256 269341554a8e6d6ddaf30424f58153f2f832b93dd4de29a816b61a9b1934a152
MD5 9669aa4337794dd07d982cfa93dfa3ec
BLAKE2b-256 470370111a3cb0d88483ee0cc2a42d47a23de8f6e46bb74287e164c1fc45404a

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