code: def run(self):
          
          input = self._consume()
          put_item = self._que_out.put
          
          try:
              if input is None: # producer
                  res = self._callable(*self._args, **self._kwargs)
              else:
                  res = self._callable(input, *self._args, **self._kwargs)
              if res != None:
                  for item in res:
                      put_item(item)
  
          except Exception as e:
              # we catch an error, we send on the error que, we consume the input and we exit
              # consuming the input queue avoid to keep running processes before exiting with
              # errors
              self._que_err.put((self.name, e))
              if input is not None:
                  for i in input:
                      pass
              raise
  
          finally:
              for i in range(self._num_followers):
                  put_item(EXIT)
              self._que_err.put(EXIT)
docs: Execute the task on all the input and send the needed number of EXIT at the end