Skip to main content

Provides a thread safe resource pool

Project description

pyresourcepool

Github: https://github.com/bensonrodney/pyresourcepool

Simple thread-safe resource pool to wait and/or use a limited set of resources, where a resource is a python object.

An example use case, and the reason this module was created, is when there exists a queue of actions to be performed but on a limited number of resources. Workers take actions from the queue and pull resources from the resource pool, perform the action and return the resource to the pool. The worker then pulls the next action from the queue and another recourse and this continues until there are no more actions in the queue.

Basically, you create a resource pool with a list of objects and then processes in multiple threads can use those resources and return them to the pool when finished.

Example usage:

from pyresourcepool.pyresourcepool import ResourcePool

# create a list of instances of "SomeObjectClass" class
objects = [SomeObjectClass() for o in range(10)]

# create the resrouce pool
rp = RecourcePool(objects)

# using an object would normally be done in some worker thread
# but for this example we'll just do it here
# Using the with block will wait for a resource to be available, return that
# resource and once the with block is exited, the resource will be returned
# to the pool.
with rp.get_resource() as obj:
    do_stuff_with_object(obj)

# at this point, outside the 'with' block, the object will have been
# returned to the object pool.

If a resource/object becomes invalid and should not be used again it can be removed from the pool with the pool's remove_resource(obj) method. An exception will be raised when the last resource is removed from the pool or when an attempt is made to get a resource from an empty pool.

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

PyResourcePool-0.1.8.tar.gz (3.3 kB view details)

Uploaded Source

Built Distributions

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

PyResourcePool-0.1.8-py3.6.egg (6.0 kB view details)

Uploaded Egg

PyResourcePool-0.1.8-py3-none-any.whl (4.6 kB view details)

Uploaded Python 3

File details

Details for the file PyResourcePool-0.1.8.tar.gz.

File metadata

  • Download URL: PyResourcePool-0.1.8.tar.gz
  • Upload date:
  • Size: 3.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.2.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.9

File hashes

Hashes for PyResourcePool-0.1.8.tar.gz
Algorithm Hash digest
SHA256 98c8f668dc5d0fa3536a35a9950879641fc0d04de5303f58ed185245ac4c4a7d
MD5 00d7ebc4e2a7ed081646e86a1f52b7e7
BLAKE2b-256 b2d96490372e37410c7853ffa1952507fdbd084fc85eb8ecd43ae3421c4a6c89

See more details on using hashes here.

File details

Details for the file PyResourcePool-0.1.8-py3.6.egg.

File metadata

  • Download URL: PyResourcePool-0.1.8-py3.6.egg
  • Upload date:
  • Size: 6.0 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.2.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.9

File hashes

Hashes for PyResourcePool-0.1.8-py3.6.egg
Algorithm Hash digest
SHA256 da4c09a0f3977f356d790a76534f53aa526650b3d48254bafa551e0595a338d1
MD5 1f06f6c6169ab4b32758bb1df60818cb
BLAKE2b-256 bf75c1854a3e898820a6ae91fd6609ee6915f6bd709903443491915a4b8ff968

See more details on using hashes here.

File details

Details for the file PyResourcePool-0.1.8-py3-none-any.whl.

File metadata

  • Download URL: PyResourcePool-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 4.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.2.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.9

File hashes

Hashes for PyResourcePool-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 f69ba82b1a5fdc8f003981c1a86e591884b4c72cc58149742c6b1c8ed8397a8e
MD5 36e196a9b34f84db3b0bbd400bc254b7
BLAKE2b-256 1d98c4a2da0061c589c2aff7a8ee86f60fae4328bf9464f55b815c6ae90ada52

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