Metadata-Version: 2.1
Name: collapsing-thread-pool-executor
Version: 2018.4
Summary: A thread pool that auto-manages the number of worker threads and is compatible with the "futures" module ThreadPoolExecutor interface.
Home-page: https://github.com/initialed85/collapsing-thread-pool-executor
Author: Edward Beech
Author-email: initialed85@gmail.com
License: MIT
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)
        
Keywords: sample setuptools development
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.6
Provides-Extra: test
Provides-Extra: dev
