code: def finish(self):
          
          if self.anybar: self.anybar.change("purple")
  
          finish_blob = Blob()
          for module in self.modules:
              if hasattr(module, 'pre_finish'):
                  log.info("Finishing {0}".format(module.name))
                  start_time = timer()
                  start_time_cpu = process_time()
                  finish_blob[module.name] = module.pre_finish()
                  self._timeit[module]['finish'] = timer() - start_time
                  self._timeit[module]['finish_cpu'] = \
                      process_time() - start_time_cpu
              else:
                  log.info("Skipping function module {0}".format(module.name))
          self._timeit['finish'] = timer()
          self._timeit['finish_cpu'] = process_time()
          self._print_timeit_statistics()
          self._finished = True
  
          if self.anybar: self.anybar.change("green")
          return finish_blob
docs: Call finish() on each attached module