bcwalrus ae333e405b hue (formerly Cloudera Desktop) from internal commit 4694ac0434dad85170854c5378a389585d87f679 %!s(int64=15) %!d(string=hai) anos
..
doc ae333e405b hue (formerly Cloudera Desktop) from internal commit 4694ac0434dad85170854c5378a389585d87f679 %!s(int64=15) %!d(string=hai) anos
examples ae333e405b hue (formerly Cloudera Desktop) from internal commit 4694ac0434dad85170854c5378a389585d87f679 %!s(int64=15) %!d(string=hai) anos
lib ae333e405b hue (formerly Cloudera Desktop) from internal commit 4694ac0434dad85170854c5378a389585d87f679 %!s(int64=15) %!d(string=hai) anos
src ae333e405b hue (formerly Cloudera Desktop) from internal commit 4694ac0434dad85170854c5378a389585d87f679 %!s(int64=15) %!d(string=hai) anos
tests ae333e405b hue (formerly Cloudera Desktop) from internal commit 4694ac0434dad85170854c5378a389585d87f679 %!s(int64=15) %!d(string=hai) anos
CHANGES.txt ae333e405b hue (formerly Cloudera Desktop) from internal commit 4694ac0434dad85170854c5378a389585d87f679 %!s(int64=15) %!d(string=hai) anos
COPYING.txt ae333e405b hue (formerly Cloudera Desktop) from internal commit 4694ac0434dad85170854c5378a389585d87f679 %!s(int64=15) %!d(string=hai) anos
INSTALL.txt ae333e405b hue (formerly Cloudera Desktop) from internal commit 4694ac0434dad85170854c5378a389585d87f679 %!s(int64=15) %!d(string=hai) anos
PKG-INFO ae333e405b hue (formerly Cloudera Desktop) from internal commit 4694ac0434dad85170854c5378a389585d87f679 %!s(int64=15) %!d(string=hai) anos
README.txt ae333e405b hue (formerly Cloudera Desktop) from internal commit 4694ac0434dad85170854c5378a389585d87f679 %!s(int64=15) %!d(string=hai) anos
THANKS.txt ae333e405b hue (formerly Cloudera Desktop) from internal commit 4694ac0434dad85170854c5378a389585d87f679 %!s(int64=15) %!d(string=hai) anos
index.html ae333e405b hue (formerly Cloudera Desktop) from internal commit 4694ac0434dad85170854c5378a389585d87f679 %!s(int64=15) %!d(string=hai) anos
setup.py ae333e405b hue (formerly Cloudera Desktop) from internal commit 4694ac0434dad85170854c5378a389585d87f679 %!s(int64=15) %!d(string=hai) anos

README.txt

.. default-role:: literal
.. include:: doc/version.txt

===================
Python processing
===================

:Author: R Oudkerk
:Contact: roudkerk at users.berlios.de
:Url: http://developer.berlios.de/projects/pyprocessing
:Version: |version|
:Licence: BSD Licence

`processing` is a package for the Python language which supports the
spawning of processes using the API of the standard library's
`threading` module. It runs on both Unix and Windows.

Features:

* Objects can be transferred between processes using pipes or
multi-producer/multi-consumer queues.

* Objects can be shared between processes using a server process or
(for simple data) shared memory.

* Equivalents of all the synchronization primitives in `threading`
are available.

* A `Pool` class makes it easy to submit tasks to a pool of worker
processes.


Links
=====

* `Documentation <./doc/index.html>`_
* `Installation instructions <./doc/INSTALL.html>`_
* `Changelog <./doc/CHANGES.html>`_
* `Acknowledgments <./doc/THANKS.html>`_
* `BSD Licence <./doc/COPYING.html>`_

The project is hosted at

* http://developer.berlios.de/projects/pyprocessing

The package can be downloaded from

* http://developer.berlios.de/project/filelist.php?group_id=9001 or
* http://pypi.python.org/pypi/processing


Examples
========

The `processing.Process` class follows the API of `threading.Thread`.
For example ::

from processing import Process, Queue

def f(q):
q.put('hello world')

if __name__ == '__main__':
q = Queue()
p = Process(target=f, args=[q])
p.start()
print q.get()
p.join()

Synchronization primitives like locks, semaphores and conditions are
available, for example ::

>>> from processing import Condition
>>> c = Condition()
>>> print c
), 0>
>>> c.acquire()
True
>>> print c
), 0>

One can also use a manager to create shared objects either in shared
memory or in a server process, for example ::

>>> from processing import Manager
>>> manager = Manager()
>>> l = manager.list(range(10))
>>> l.reverse()
>>> print l
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> print repr(l)


Tasks can be offloaded to a pool of worker processes in various ways,
for example ::

>>> from processing import Pool
>>> def f(x): return x*x
...
>>> p = Pool(4)
>>> result = p.mapAsync(f, range(10))
>>> print result.get(timeout=1)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]


.. raw:: html


width="124px" height="32px" border="0" alt="BerliOS Developer Logo">