Skip to main content

Latest release 20190923: Remove dependence on cs.obj.

Thread related convenience classes and functions.

Class AdjustableSemaphore

A semaphore whose value may be tuned after instantiation.

Function bg(func, daemon=None, name=None, no_start=False, no_logexc=False, args=None, kwargs=None)

Dispatch the callable func in its own Thread; return the Thread.

Parameters:

  • func: a callable for the Thread target.
  • daemon: optional argument specifying the .daemon attribute.
  • name: optional argument specifying the Thread name, default: the name of func.
  • no_start: optional argument, default False. If true, do not start the Thread.
  • no_logexc: if false (default False), wrap func in @logexc.
  • args, kwargs: passed to the Thread constructor

Class LockableMixin

Trite mixin to control access to an object via its ._lock attribute. Exposes the ._lock as the property .lock. Presents a context manager interface for obtaining an object's lock.

Function locked(func)

A decorator for monitor functions that must run within a lock. Relies upon a ._lock attribute for locking.

Function locked_property(func, lock_name='_lock', prop_name=None, unset_object=None)

A thread safe property whose value is cached. The lock is taken if the value needs to computed.

Class PriorityLock

A priority based mutex.

A priority based mutex which is acquired by and released to waiters in priority order.

The initialiser sets a default priority, itself defaulting to 0.

The acquire() method accepts an optional priority value which specifies the priority of the acquire request; lower values have higher priorities. acquire returns a new PriorityLockSubLock.

Note that internally this allocates a threading.Lock per acquirer.

When acquire is called, if the PriorityLockis taken then the acquirer blocks on their personalLock`.

When release() is called the highest priority Lock is released.

Within a priority level acquires are served in FIFO order.

Used as a context manager, the mutex is obtained at the default priority.

The priority() method offers a context manager with a specified priority.

Method PriorityLock.__init__(self, default_priority=0, name=None)

Initialise the PriorityLock.

Parameters:

  • default_priority: the default acquire priority, default 0.
  • name: optional identifying name

Function via(cmanager, func, *a, **kw)

Return a callable that calls the supplied func inside a with statement using the context manager cmanager. This intended use case is aimed at deferred function calls.

Class WorkerThreadPool

MRO: cs.resources.MultiOpenMixin
A pool of worker threads to run functions.

Method WorkerThreadPool.__init__(self, name=None, max_spare=4)

Initialise the WorkerThreadPool.

Parameters:

  • name: optional name for the pool
  • max_spare: maximum size of each idle pool (daemon and non-daemon)

Class WTPoolEntry

MRO: builtins.tuple
WTPoolEntry(thread, queue)

Release Log

Release 20190923: Remove dependence on cs.obj.

Release 20190921: New PriorityLock class for a mutex which releases in (priority,fifo) order.

Release 20190812: bg: compute default name before wrapping func in @logexc.

Release 20190729: bg: provide default name, run callable inside Pfx, add optional no_logexc=False param preventing @logec wrapper if true.

Release 20190422: bg(): new optional no_start=False keyword argument, preventing Thread.start if true

Release 20190102: Drop some unused classes. New LockableMixin, presenting a context manager and a .lock property.

Release 20160828: Use "install_requires" instead of "requires" in DISTINFO.

Release 20160827: Replace bare "excepts" with "except BaseException". Doc updates. Other minor improvements.

Release 20150115: First PyPI release.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cs.threads-20190923.tar.gz (7.9 kB view details)

Uploaded Source

File details

Details for the file cs.threads-20190923.tar.gz.

File metadata

  • Download URL: cs.threads-20190923.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.4

File hashes

Hashes for cs.threads-20190923.tar.gz
Algorithm Hash digest
SHA256 e8e52952e582da2380da2937bdfc7ad7a2219e89d7832255ae45ee173f2f28ce
MD5 38f2968a93c672b2e16f2306ae47756e
BLAKE2b-256 5fee47f621b1b4cceaf9b402e79ff01802b5e19963bee732f9b4b6b6acdbc028

See more details on using hashes here.

Release history Release notifications | RSS feed

20260610

2 files

20260531

2 files

20260530

2 files

20260526

2 files

20250528

2 files

20250325

2 files

20250306

2 files

20241005

2 files

20240630

2 files

20240422

2 files

20240412

2 files

20240316

2 files

20240303

2 files

20231129

2 files

20230331

2 files

20230212

2 files

20230125

2 files

20221228

2 files

20221207

2 files

20221118

2 files

20211208

1 file

20210306

1 file

20210123

1 file

20201025

1 file

20200718

1 file

20200521

1 file

20191102

1 file

20190923.2

1 file

20190923.1

1 file

This release

20190923 This release

1 file

20190812

1 file

20190729

1 file

20190422

1 file

20190102

1 file

20160828

1 file

20160827

1 file

20150115

1 file

Supported by

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