Skip to main content

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)

Metadata

Release files for collapsing-thread-pool-executor 2020.7.18

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for collapsing-thread-pool-executor 2020.7.18
File Size Uploaded
collapsing-thread-pool-executor-2020.7.18.tar.gz 6.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for collapsing-thread-pool-executor 2020.7.18
File Interpreter ABI Platform
collapsing_thread_pool_executor-2020.7.18-py2-none-any.whl Python 2 none any Details

Total release size: 14.4 kB

Release files / collapsing-thread-pool-executor-2020.7.18.tar.gz

Download URL collapsing-thread-pool-executor-2020.7.18.tar.gz
Size 6.4 kB
Tags Source
SHA-256 checksum
How to use checksums
456347998409487d43071a86166ea207b6b06c742540522e6b601c794037cad1
BLAKE2b-256 checksum
How to use checksums
a78c64c3458576dddec371ffdf9500d87f31133269391d54c3ec0f592750f75c
Upload date
Uploaded using Trusted Publishing?
What is 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

Release files / collapsing_thread_pool_executor-2020.7.18-py2-none-any.whl

Download URL collapsing_thread_pool_executor-2020.7.18-py2-none-any.whl
Size 8.0 kB
Tags Python 2
SHA-256 checksum
How to use checksums
b1745c48b1127b3d6a773e66e3afe7fa7d8655de053f20e9d1f206305cdcf491
BLAKE2b-256 checksum
How to use checksums
2bd699e147945bbda09505892175abdf203a0f22046f01b645fe486d77339438
Upload date
Uploaded using Trusted Publishing?
What is 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

Release history Release notifications | RSS feed

This release

2020.7.18 This release

2 release files

2018.6

2 release files

2018.5

2 release files

2018.4

2 release files

2018.3

2 release files

2018.2

2 release files

2018.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page