A thread pool that auto-manages the number of worker threads and is compatible with the "futures" module ThreadPoolExecutor interface.
Project description
CollapsingThreadPoolExecutor
The CollapsingThreadPoolExecutor is inspired by and compatible with the ThreadPoolExecutor from the "futures" module, it operates differently in that worker threads are handled with a stack which results in the same worker or workers doing all the work (and idle workers being destroyed).
How to install
$ pip install collapsing-thread-pool-executor
How to develop
Prerequisites
- python3 w/ pip
- python2 w/ pip
- virtualenvwrapper
- entr
Set up the environments
$ mkvirtualenv -p `which python2.7` collapsing-thread-pool-executor-py2
$ pip install .
$ pip install -r requirements.txt
$ mkvirtualenv -p `which python3` collapsing-thread-pool-executor-py3
$ pip install .
$ pip install -r requirements.txt
Watch the tests
# watch python2 tests in one window
$ workon collapsing-thread-pool-executor-py2
$ find ./ -name '*.py' | entr -c py.test -v --log-level=DEBUG collapsing_thread_pool_executor
# watch python3 tests in one window
$ workon collapsing-thread-pool-executor-py3
$ find ./ -name '*.py' | entr -c py.test -v --log-level=DEBUG collapsing_thread_pool_executor
Examples
The example below will execute some_task()
100 times; as some_task()
should take a second to execute and as we've allocated 10 workers, the whole thing should take about 10 seconds.
import time
from collapsing_thread_pool_executor import CollapsingThreadPoolExecutor
def some_task():
time.sleep(1)
# all arguments are optional
pool = CollapsingThreadPoolExecutor(
workers=10,
thread_name_prefix='SomePool',
permitted_thread_age_in_seconds=60,
)
for i in range(0, 100):
pool.submit(some_task)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file collapsing-thread-pool-executor-2020.7.18.tar.gz
.
File metadata
- Download URL: collapsing-thread-pool-executor-2020.7.18.tar.gz
- Upload date:
- Size: 6.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 456347998409487d43071a86166ea207b6b06c742540522e6b601c794037cad1 |
|
MD5 | e51f8fbce595d1b0088fc99ef9fa22fc |
|
BLAKE2b-256 | a78c64c3458576dddec371ffdf9500d87f31133269391d54c3ec0f592750f75c |
File details
Details for the file collapsing_thread_pool_executor-2020.7.18-py2-none-any.whl
.
File metadata
- Download URL: collapsing_thread_pool_executor-2020.7.18-py2-none-any.whl
- Upload date:
- Size: 8.0 kB
- Tags: Python 2
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b1745c48b1127b3d6a773e66e3afe7fa7d8655de053f20e9d1f206305cdcf491 |
|
MD5 | 912ab13a78ffff39b482692dc0140ffe |
|
BLAKE2b-256 | 2bd699e147945bbda09505892175abdf203a0f22046f01b645fe486d77339438 |