class_docstr: FlatMap Operator.
  
  FlatMap transforms the iterable/nested outputs into one or more elements, i.e. split elements, unnest iterables.
  
  i.e.
          ---[0, 1, 2, 3]--->
      [    FlatMap('input', 'output', lambda i: i)    ]
          ---0---1---2---3--->
code: def process_step(self):
      self._time_profiler.record(self.uid, Event.queue_in)
      data = self.read_row()
      if data is None or not self.side_by_to_next(data):
          return None
      process_data = [data.get(key) for key in self._node_repr.inputs]
  
      if any((item is Empty() for item in process_data)):
          return None
  
      self._time_profiler.record(self.uid, Event.process_in)
      succ, outputs, msg = self._call(process_data)
      assert succ, msg
  
      size = len(self._node_repr.outputs)
      for output in outputs:
          if size > 1:
              output_map = {
                  self._node_repr.outputs[i]: output[i]
                  for i in range(size)
              }
          else:
              output_map = {self._node_repr.outputs[0]: output}
          if not self.data_to_next(output_map):
              return None
  
      self._time_profiler.record(self.uid, Event.process_out)
      self._time_profiler.record(self.uid, Event.queue_out)
  
imports: from towhee.runtime.data_queue import Empty
  from towhee.runtime.time_profiler import Event
  from .node import Node
  from ._single_input import SingleInputMixin
label_desc: Use image node_id 1 for calling the FlatMap obj's underlying member method code with example usage: obj.process_step() and returns: None, None, None