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)

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: cy_rwlock-1.7.tar.gz
  • Upload date:
  • Size: 4.4 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.7.tar.gz
Algorithm Hash digest
SHA256 25c3f33d8a29619898dc8c1d5cde00995abd20ffa8ea9b1521a220eb3e17cd47
MD5 4fbb8082ecf97dee1b499e606f76e0c3
BLAKE2b-256 d7842d9a79ebf48b5e6ad46f28e707388dcc48d4e6905617dbc89759c0d55194

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cy_rwlock-1.7-py3-none-any.whl
  • Upload date:
  • Size: 6.9 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.7-py3-none-any.whl
Algorithm Hash digest
SHA256 c985f52999907fcc14b68c71975a1112c4b0421656ff14ac383505f966d4a520
MD5 368ba05f8fdd635df615ddcc1d546fc4
BLAKE2b-256 07d6feb9ca4c8203ffc8ab9e316c755b58da1f8e2356908ab3c29fc0fb33acd9

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