def start(self, stages=(<NUM_LIT:1>, <NUM_LIT:2>)):
if <NUM_LIT:1> in stages:<EOL><INDENT>if not self._started.isSet():<EOL><INDENT>self._start_workers()<EOL>self._started.set()<EOL><DEDENT><DEDENT>if <NUM_LIT:2> in stages:<EOL><INDENT>if not hasattr(self, '<STR_LIT>'):<EOL><INDENT>self._start_managers()<EOL><DEDENT><DEDENT>
Starts the processes or threads in the internal pool and the threads, 
which manage the **worker pool** input and output queues. The 
**starting mode** is split into **two stages**, which can be initiated 
seperately. After the first stage the **worker pool** processes or 
threads are  started and the ``NuMap._started`` event is set ``True``.
A call to the ``NuMap.next`` method **will** block. After the **second 
stage** the ``NuMap._pool_putter`` and ``NuMap._pool_getter`` threads
will be running. The ``NuMap.next`` method should only be called **after** 
this method returns.

Arguments:

  - stages (``tuple``) [default: ``(1, 2)``] Specifies which stages of 
    the start process to execute, by default both stages.