skip to navigation
skip to content

Pebble 4.3.6

Threading and multiprocessing eye-candy.

Package Documentation

Pebble provides a neat API to manage threads and processes within an application.

Source:https://github.com/noxdafox/pebble
Documentation:https://pebble.readthedocs.io
Download:https://pypi.python.org/pypi/pebble

Examples

Run a job in a separate thread and wait for its results.

from pebble import concurrent

@concurrent.thread
def function(foo, bar=0):
    return foo + bar

future = function(1, bar=2)

result = future.result()  # blocks until results are ready

Run a function with a timeout of ten seconds and deal with errors.

from pebble import concurrent
from concurrent.futures import TimeoutError

@concurrent.process(timeout=10)
def function(foo, bar=0):
    return foo + bar

future = function(1, bar=2)

try:
    result = future.result()  # blocks until results are ready
except TimeoutError as error:
    print("Function took longer than %d seconds" % error.args[1])
except Exception as error:
    print("Function raised %s" % error)
    print(error.traceback)  # traceback of the function

Pools support workers restart, timeout for long running tasks and more.

from pebble import ProcessPool
from concurrent.futures import TimeoutError

def function(foo, bar=0):
    return foo + bar

def task_done(future):
    try:
        result = future.result()  # blocks until results are ready
    except TimeoutError as error:
        print("Function took longer than %d seconds" % error.args[1])
    except Exception as error:
        print("Function raised %s" % error)
        print(error.traceback)  # traceback of the function

with ProcessPool(max_workers=5, max_tasks=10) as pool:
    for i in range(0, 10):
        future = pool.schedule(function, args=[i], timeout=3)
        future.add_done_callback(task_done)
 
File Type Py Version Uploaded on Size
Pebble-4.3.6-py2.py3-none-any.whl (md5) Python Wheel 3.5 2017-12-12 21KB
Pebble-4.3.6.tar.gz (md5) Source 2017-12-12 20KB