Metadata-Version: 2.0
Name: link.parallel
Version: 0.1
Summary: Parallel computing framework
Home-page: https://github.com/linkdd/link.parallel
Author: David Delassus
Author-email: david.jose.delassus@gmail.com
License: MIT
Keywords: link parallel computing map reduce
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Utilities
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: Implementation :: CPython
Requires-Dist: b3j0f.conf (>=0.3.18)
Requires-Dist: dill (>=0.2.5)
Requires-Dist: ipython[parallel] (>=5.0.0)
Requires-Dist: link.kvstore (>=0.10)
Requires-Dist: link.middleware (>=1.4)
Requires-Dist: six (>=1.10.0)

link.parallel
=============

**link.parallel** is a database agnostic query system.

See documentation_ for more informations.

.. _documentation: https://linkparallel.readthedocs.io

.. image:: https://img.shields.io/pypi/l/link.parallel.svg?style=flat-square
   :target: https://pypi.python.org/pypi/link.parallel/
   :alt: License

.. image:: https://img.shields.io/pypi/status/link.parallel.svg?style=flat-square
   :target: https://pypi.python.org/pypi/link.parallel/
   :alt: Development Status

.. image:: https://img.shields.io/pypi/v/link.parallel.svg?style=flat-square
   :target: https://pypi.python.org/pypi/link.parallel/
   :alt: Latest release

.. image:: https://img.shields.io/pypi/pyversions/link.parallel.svg?style=flat-square
   :target: https://pypi.python.org/pypi/link.parallel/
   :alt: Supported Python versions

.. image:: https://img.shields.io/pypi/implementation/link.parallel.svg?style=flat-square
   :target: https://pypi.python.org/pypi/link.parallel/
   :alt: Supported Python implementations

.. image:: https://img.shields.io/pypi/wheel/link.parallel.svg?style=flat-square
   :target: https://travis-ci.org/linkdd/link.parallel
   :alt: Download format

.. image:: https://travis-ci.org/linkdd/link.parallel.svg?branch=master&style=flat-square
   :target: https://travis-ci.org/linkdd/link.parallel
   :alt: Build status

.. image:: https://coveralls.io/repos/github/linkdd/link.parallel/badge.svg?style=flat-square
   :target: https://coveralls.io/r/linkdd/link.parallel
   :alt: Code test coverage

.. image:: https://img.shields.io/pypi/dm/link.parallel.svg?style=flat-square
   :target: https://pypi.python.org/pypi/link.parallel/
   :alt: Downloads

.. image:: https://landscape.io/github/linkdd/link.parallel/master/landscape.svg?style=flat-square
   :target: https://landscape.io/github/linkdd/link.parallel/master
   :alt: Code Health

.. image:: https://www.quantifiedcode.com/api/v1/project/4cc042fb351e44228a67fc7d6835ae6b/badge.svg
  :target: https://www.quantifiedcode.com/app/project/4cc042fb351e44228a67fc7d6835ae6b
  :alt: Code issues

Installation
------------

.. code-block:: text

   pip install link.parallel

Features
--------

 * parallel loops interface with IPython and multiprocessing drivers
 * Map/Reduce middleware

Examples
--------

Create your map/reduce functions:

.. code-block:: python

   from b3j0f.task import register_task


   @register_task('mymap')
   def mymap(mapper, item):
       if item['i'] < 5:
           mapper.emit('i_lt_5', item)

       elif item['i'] > 5:
           mapper.emit('i_gt_5', item)

       else:
           mapper.emit('i_eq_5', item)


   @register_task('myreduce')
   def myreduce(key, values):
       return (key, len(values))


Get input data and pass it to the middleware:

.. code-block:: python

   from link.middleware.core import Middleware

   mapreduce = Middleware.get_middleware_by_uri(
       'mapreduce+ipython:///test/classify?mapcb=mymap&reducecb=myreduce'
   )

   items = # load items
   result = dict(mapreduce(items))

   print(result)


