code: def append_multiple(self, data, segment=0):
          
          if not hasattr(data, '__iter__'):
              raise TypeError("append_multiple must be passed an iterable object")
          tmp_list = []
  
          # Avoid copy in cases that we are passed materialized data that is
          # smaller than our block size
          if hasattr(data, '__len__'):
              if len(data) <= self._block_size:
                  self._builder.append_multiple(data, segment)
                  return
  
          for i in data:
              tmp_list.append(i)
              if len(tmp_list) >= self._block_size:
                  self._builder.append_multiple(tmp_list, segment)
                  tmp_list = []
          if len(tmp_list) > 0:
              self._builder.append_multiple(tmp_list, segment)
docs: Append multiple rows to an SFrame.
  
          Throws a RuntimeError if one or more column's type is incompatible with
          a type appended.
  
          Parameters
          ----------
          data  : iterable[iterable]
              A collection of multiple iterables, each representing a single row.
  
          segment : int
              The segment to write the given rows. Each segment is numbered
              sequentially, starting with 0. Any value in segment 1 will be after
              any value in segment 0, and the order of rows in each segment is
              preserved as they are added.