Starts the pipeline by connecting the input ``Pipers`` of the pipeline 
        to the input data, connecting the pipeline and starting the ``NuMap``
        instances.
        
        The order of items in the "datas" argument sequence should correspond 
        to the order of the input ``Pipers`` defined by ``Dagger._cmp`` and 
        ``Piper.ornament``.

        Arguments:
        
          - datas(sequence) A sequence of external input data in the form of 
            sequences or iterators.

def start(self, datas):
        """
        Starts the pipeline by connecting the input ``Pipers`` of the pipeline 
        to the input data, connecting the pipeline and starting the ``NuMap``
        instances.
        
        The order of items in the "datas" argument sequence should correspond 
        to the order of the input ``Pipers`` defined by ``Dagger._cmp`` and 
        ``Piper.ornament``.

        Arguments:
        
          - datas(sequence) A sequence of external input data in the form of 
            sequences or iterators.

        """
        if not self._started.isSet() and \
           not self._running.isSet() and \
           not self._pausing.isSet():
            # Plumber statistics
            self.stats = {}
            self.stats['start_time'] = None
            self.stats['run_time'] = None
            # connects input pipers to external data
            self.connect_inputs(datas)
            # connects pipers within the pipeline
            self.connect()
            # make pointers to results collected for pipers by imaps
            self.stats['pipers_tracked'] = {}
            for piper in self.postorder():
                if hasattr(piper.imap, '_tasks_tracked') and piper.track:
                    self.stats['pipers_tracked'][piper] = \
                    [piper.imap._tasks_tracked[t.task] for t in piper.imap_tasks]

            self.stats['start_time'] = time()
            # starts the Dagger
            # this starts Pipers and NuMaps
            super(Plumber, self).start()
            # transitioning to started state
            self._started.set()
            self._finished.clear()
        else:
            raise PlumberError