========
Features
========

Async
-----

* A :py:class:`.futurist.GreenThreadPoolExecutor` using `eventlet`_ green
  thread pools. It provides a standard `executor`_ API/interface and it also
  gathers execution statistics. It returns instances of
  :py:class:`.futurist.GreenFuture` objects.
* A :py:class:`.futurist.ProcessPoolExecutor` derivative that gathers execution
  statistics. It returns instances of :py:class:`.futurist.Future` objects.
* A :py:class:`.futurist.SynchronousExecutor` that **doesn't** run
  concurrently. It has the same `executor`_ API/interface and it also
  gathers execution statistics. It returns instances
  of :py:class:`.futurist.Future` objects.
* A :py:class:`.futurist.ThreadPoolExecutor` derivative that gathers
  execution statistics. It returns instances
  of :py:class:`.futurist.Future` objects.

Periodics
---------

* A :py:class:`.futurist.periodics.PeriodicWorker` that can use the previously
  mentioned executors to run asynchronous work periodically in parallel
  or synchronously. It does this by executing arbitary functions/methods
  that have been decorated with the :py:func:`.futurist.periodics.periodic`
  decorator according to a internally maintained schedule (which itself is
  based on the `heap`_ algorithm).

.. _heap: https://en.wikipedia.org/wiki/Heap_%28data_structure%29
.. _eventlet: http://eventlet.net/
.. _executor: https://docs.python.org/dev/library/concurrent.futures.html#executor-objects
