Threading and multiprocessing eye-candy.
Project description
Description
Pebble provides a neat API to manage threads and processes within an application.
Examples
Launch a task in a thread and wait for its results:
from pebble import thread
@thread
def do_job(foo, bar=0):
return foo + bar
if __name__ == "__main__":
task = do_job(1, bar=2)
print task.get() # it will block until do_job has completed
Launch five tasks in separate processes and handle their results in a callback:
from pebble import process
def task_done(task):
print "Task %s has returned %d" % (task.id, task.get())
@process(callback=task_done)
def do_job(foo, bar=0):
return foo + bar
if __name__ == "__main__":
for i in range(0, 5):
do_job(i)
raw_input("Press return to exit.")
Callbacks can be dynamically (re)assigned, useful to set instance methods as callback:
import time
from pebble import process
class Foo(object):
def __init__(self):
self.counter = 0
self.errors = 0
self.do_job.callback = self.task_done
def task_done(self, task):
try:
self.counter += task.get()
except: # exception are re-raised by the get() method
self.errors += 1
@process
def do_job():
return 1
@process
def do_wrong_job():
raise Exception("Ops!")
if __name__ == "__main__":
foo = Foo()
tasks = []
for i in range(0, 5):
task = foo.do_job()
tasks.append(task)
task = foo.do_wrong_job()
tasks.append(task)
time.sleep(1)
print foo.counter
print foo.errors
TODO
A roadmap:
* pools of workers:: - @process.pool - @thread.pool
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
Pebble-2.0.2.tar.gz
(5.9 kB
view details)
File details
Details for the file Pebble-2.0.2.tar.gz.
File metadata
- Download URL: Pebble-2.0.2.tar.gz
- Upload date:
- Size: 5.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
02bd38e9e53b4e1c7780d441e73c68398e9f5acd1cf9fbf16f2980cb3caa475b
|
|
| MD5 |
bd2bf22603bd729dc22dcfa0d78cb7b6
|
|
| BLAKE2b-256 |
f84fa4c55e1a3f6a2f550f94a022fb3251ae238a88bad649aeafdf039c04be0b
|